日期:2014-05-17  浏览次数:20838 次

一个简单的SQL,高手帮忙写.
S表中:
type           acct_month       charge
DDN及其它 200610 2440.5
DDN及其它 200611 1577.2
DDN及其它 200612 15555.64
公话超市 200610 37.41
公话超市 200611 1681.51
公话超市 200612 59994.4
甲类电话 200610 1159.58
甲类电话 200611 5699.18
甲类电话 200612 105507.23
甲类宽带 200610 4750.28
甲类宽带 200611 10993.9
甲类宽带 200612 137772.27
其它公话 200610 110
其它公话 200611 149.15
其它公话 200612 481.89

想得到结果:
type 200610 200611 200612 总计
DDN及其它 2440.5 1577.2 15555.64 19573.34
公话超市 37.41 1681.51 59994.4 61713.32
甲类电话 1159.58 5699.18 105507.23 112365.99
甲类宽带 4750.28 10993.9 137772.27 153516.45
其它公话 110 149.15 481.89 741.04
总计 8497.77 20100.94 319311.43 347910.14

说白了就是实现EXCEL中 "数据透视表 "功能
用SQL语句应该怎么写?



------解决方案--------------------
SELECT TYPE,
SUM(CASE acct_month WHEN '200610 ' THEN charge ELSE NULL END) NY200610,
SUM(CASE acct_month WHEN '200611 ' THEN charge ELSE NULL END) NY200611,
SUM(CASE acct_month WHEN '200612 ' THEN charge ELSE NULL END) NY200612
FROM TEST123 GROUP BY TYPE;