The requirement is not 100% clear to me, but I think you are after something like this:
select case when @groupBy = 'dept' then department else jobCode end dept_jobCode, sum(hours) from employees group by case when @groupBy = 'dept' then department else jobCode end;
To check this setting:
create table employees ( lastName varchar(20), department varchar(20), jobCode varchar(20), hours number ); insert into employees values ('Miller', 'Dept 1', 'A', 10); insert into employees values ('Doe' , 'Dept 1', 'A', 7); insert into employees values ('Baker' , 'Dept 1', 'B', 4); insert into employees values ('Sand' , 'Dept 2', 'B', 6); insert into employees values ('Stark' , 'Dept 2', 'B', 9); insert into employees values ('Gild' , 'Dept 2', 'A', 9);
Obviously you want to set @groupBy both 'dept' and any other value.
source share