GROUP BY using parameters in SQL

前端 未结 4 1974
一整个雨季
一整个雨季 2020-12-19 11:01

I am trying to somehow group a report based on a drop-down list of parameters that is pre-defined. I want to be able to subtotal the Total Hours or Total Pay of my report b

4条回答
  •  伪装坚强ぢ
    2020-12-19 11:44

    The requirement is not 100% clear to me, but I imagine your 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 be tried with this setup:

    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 to either 'dept' or any other value.

提交回复
热议问题