开始格式
年份     单位    人数     
2010    一部     10    
2010    二部     20        
2011    一部     30      转换后的格式
年份         人数       人数
2010          10         20       
2011          30         0如何实现。。

解决方案 »

  1.   


    --你描述不清啊,我估计你是要得到的列:年份 一部人数 二部人数
    select 年份,
           nvl(sum(decode(单位,'一部',人数,0)),0) as 一部人数,
           nvl(sum(decode(单位,'二部',人数,0)),0) as 二部人数
    from table
    group by 年份
      

  2.   


    with t as
    (
    select 2010 tyear,'一部' dept,10 un from dual union all
    select 2010 tyear,'二部' dept,20 un from dual union all
    select 2011 tyear,'一部' dept,30 un from dual
    )
    select tyear,nvl(max(a1),0),nvl(max(a2),0) from 
    (select tyear,decode(dept,'一部',un)a1,decode(dept,'二部',un)a2 
    from t order by tyear)group by tyear
      

  3.   


    只要你部门是可列举的,就用这个方法把,nvl()可以去掉
      

  4.   


    测试表
    create table TEST
    (
      USER_NAME VARCHAR2(60) not null,
      TESTDATE  DATE,
      STATION   VARCHAR2(200)
    )加入测试数据
    INSERT INTO TEST ('user1',sysdate,'satation1')
    INSERT INTO TEST ('user1',sysdate-1,'satation2')
    INSERT INTO TEST ('user2',sysdate-2,'satation2')SELECT * FROM TEST
    查询结果:
    然后执行:
    select to_char(testdate,'yyyy/mm/dd'),count(*),STATION from test group by to_char(testdate,'yyyy/mm/dd'),STATION结果为:
    如何得到最终想要的结果,最终想要的结果格式为
      

  5.   

    测试表
    create table TEST
    (
      USER_NAME VARCHAR2(60) not null,
      TESTDATE  DATE,
      STATION   VARCHAR2(200)
    )加入测试数据
    INSERT INTO TEST ('user1',sysdate,'satation1')
    INSERT INTO TEST ('user1',sysdate-1,'satation2')
    INSERT INTO TEST ('user2',sysdate-2,'satation2')SELECT * FROM TEST
    查询结果:
    然后执行:
    select to_char(testdate,'yyyy/mm/dd'),count(*),STATION from test group by to_char(testdate,'yyyy/mm/dd'),STATION结果为:
    如何得到最终想要的结果,最终想要的结果格式为