有数据表Table,有字段 Debt(部门)、Duty(职务,值为高工、工程师、助工之一),表中有如下数据:
     Debt(部门)  Duty(职务)
     设计室1      高工
     设计室2      助工
     设计室2      高工
     设计室1      工程师 
希望首先按Debt分组汇总记录数,同时在每一分组内,再按Duty分组汇总记录数,结果集是:
      部门       总计   高工    工程师    助工
     设计室1      2      1        1        0 
     设计室2      2      1        0        1  
  SQL语句是怎样的? 

解决方案 »

  1.   

    select Debt,count(*),count(decode(Duty,'高工',1,null)),
    count(decode(Duty,'工程师',1,null)),
    count(decode(Duty,'助工',1,null))    from table
    group by debt
      

  2.   

    结果不对阿,按Duty汇总没有生效:
         部门       总计   高工    工程师    助工
         设计室1      2      0        0       0 
         设计室2      2      0       0        0  
      

  3.   

    建议楼主好好看看数据吧!
    已测试!
    create table test
    (
     Debt varchar(20),Duty varchar(20)      )insert into test
    select '设计室1','高工' from dual union
    select '设计室1','助工' from dual union
    select '设计室1','工程师' from dual union
    select '设计室2','助工' from dual union
    select '设计室2','高工' from dual
    select * from testselect Debt,count(*),count(decode(Duty,'高工',1,null)),
    count(decode(Duty,'工程师',1,null)),
    count(decode(Duty,'助工',1,null))    from test
    group by debt