有一个表:
ID    月份   长途通话数  本地通话数
1     3       12        13
2     3       12        55
3     4       65        3
4     4       77        4
5     4       66        2
6     5       66        89
7     5       66        0
....
----------
想要的结果表:
ID  3月份长途通话数 3月份本地通话数 4月份长途通话数 4月份本地通话数 5月份长途通话数 5月份本地通话数
...
...
...
注释:月份就只有3,4,5这三个月,按ID  group by

解决方案 »

  1.   

    select id, case when , case when then else ....
      

  2.   

    -- 用case when 语句,详细,自己看着办...............
      

  3.   

    Select 
    sum(CASE WHEN  [月份]=3  THEN  长途通话数 ELSE 0 END) AS '3月长途通话数',
    sum(CASE WHEN  [月份]=3  THEN  本地通话数 ELSE 0 END) AS '3月本地通话数',
    sum(CASE WHEN  [月份]=4  THEN  长途通话数 ELSE 0 END) AS '4月长途通话数',
    sum(CASE WHEN  [月份]=4  THEN  本地通话数 ELSE 0 END) AS '4月本地通话数',
    sum(CASE WHEN  [月份]=5  THEN  长途通话数 ELSE 0 END) AS '5月长途通话数',
    sum(CASE WHEN  [月份]=5  THEN  本地通话数 ELSE 0 END) AS '5月本地通话数'
    from Ta或用nvl
      

  4.   

    谢谢!!忘了sum 函数了
    哈哈哈
      

  5.   

    Select 
    SUM(DECODE([月份],3,长途通话数,0)) AS '3月长途通话数',
    SUM(DECODE([月份],3,本地通话数,0)) AS '3月本地通话数',
    SUM(DECODE([月份],4,长途通话数,0)) AS '4月长途通话数',
    SUM(DECODE([月份],4,本地通话数,0)) AS '4月本地通话数',
    SUM(DECODE([月份],5,长途通话数,0)) AS '5月长途通话数',
    SUM(DECODE([月份],5,本地通话数,0)) AS '5月本地通话数',
    from Ta