一个表如下结构:
------------------------
行号    月份    销售额
工行    200601   20
工行    200601   10
农行    200602   10
农行    200603   30
建行    200604   10
建行    200601   20
建行    200601   20
------------------------我想通过转换成如下结构---------------------------------------
行号    一月   二月   三月 
工行    XX      XX    XX
农行    XX      XX    XX
建行    XX      XX    XX
.
.
.
----------------------------------------
请问sql语句应该怎么写?

解决方案 »

  1.   

    select 行号,sum(decode(substr(月份,5,2),'01',销售额,0)) as 一月,sum(decode(substr(月份,5,2),'02',销售额,0)) as 二月, sum(decode(substr(月份,5,2),'03',销售额,0)) as 三月 from 表名  group by 行号;
      

  2.   

    [Q]如何实现行列转换
    [A]1、固定列数的行列转换

    student subject grade
    ---------------------------
    student1 语文 80
    student1 数学 70
    student1 英语 60
    student2 语文 90
    student2 数学 80
    student2 英语 100
    ……
    转换为 
    语文 数学 英语
    student1 80 70 60
    student2 90 80 100
    ……
    语句如下:
    select student,sum(decode(subject,'语文', grade,null)) "语文",
    sum(decode(subject,'数学', grade,null)) "数学",
    sum(decode(subject,'英语', grade,null)) "英语"
    from table
    group by student
      

  3.   

    行列转换,典型的decode(case)案例