有个问题想请各位高手指导。
假设有一个表为:
id     course     grade
------------------------
u1       c1        g1
u1       c2        g2
u2       c1        g3
u2       c2        g4
要求转化为如下格式
id       c1       c2
---------------------
u1       g1       g2
u2       g3       g4
要如何操作呢?上面可能写得不清楚,用个例子
id     course     grade
------------------------
小明     语文       60
小明     数学       65
小刚     语文       90
小刚     数学       95
要求转化为如下格式
id       语文       数学
-------------------------
小明      60         65
小刚      90         95
谢谢啦!

解决方案 »

  1.   

    select id,sum(decode(course,'语文',grade)) 语文,sum(decode(course,'数学',grade)) 数学 from temp group by id
      

  2.   

    create table tab ( 
    counter varchar(20), -- 参加考试人数 
    subject varchar(20), -- 科目 
    class varchar(20) -- 班级 
    ); --表数据: 
    insert into tab
    select '36', '英语' ,'一班' from dual 
    union all select '44', '英语', '二班'  from dual 
    union all select '44', '数学', '二班'  from dual 
    union all select '33', '语文', '一班'  from dual 
    union all select '39', '语文', '三班'  from dual --代码
     select subject 
      ,max(decode(class,'一班',counter))"一班"
      ,max(decode(class,'三班',counter))"三班"
      ,max(decode(class,'二班',counter))"二班" 
      from tab group by subject
      
    --转换后: 
        SUBJECT 一班 三班 二班
    1 数学 44
    2 英语 36 44
    3 语文 33 39
      

  3.   


    select id,max(decode(course,'语文',grade)) 语文,
    max(decode(course,'数学',grade)) 数学
    from tb
    group by id
      

  4.   

    create table tab ( 
    counter varchar(20), -- 参加考试人数 
    subject varchar(20), -- 科目 
    class varchar(20) -- 班级 
    ); --表数据: 
    insert into tab
    select '36', '英语' ,'一班' from dual 
    union all select '44', '英语', '二班'  from dual 
    union all select '44', '数学', '二班'  from dual 
    union all select '33', '语文', '一班'  from dual 
    union all select '39', '语文', '三班'  from dual --代码
     select subject 
      ,max(decode(class,'一班',counter))"一班"
      ,max(decode(class,'三班',counter))"三班"
      ,max(decode(class,'二班',counter))"二班" 
      from tab group by subject