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

求一SQL语句 马上结贴
本帖最后由 colorsky_010 于 2013-09-17 19:28:53 编辑
如题。
在表A中,有终端号(ZDH),卡号(KH),消费金额(XFJE),消费时间(XFSJ)4个字段,假设目前有3个终端,一共有5张卡进行了消费,想统计在每个终端上每个卡号的消费总金额。
注:5张卡不一定都在3个终端上进行了消费。

举例:
终端号   卡号1    卡号2    卡号3    卡号4    卡号5
11         18         5          0          2          0
22         0          0          5          0          20
233        4          9          0          0          0

------解决方案--------------------
如果只有五张卡,则是典型的行转列,可用以下sql

SELECT ZDH,SUM(DECODE(KH,'卡号1',KH,0)) 卡号1,
           SUM(DECODE(KH,'卡号1',KH,0)) 卡号2,
           SUM(DECODE(KH,'卡号1',KH,0)) 卡号3,
           SUM(DECODE(KH,'卡号1',KH,0)) 卡号4,
           SUM(DECODE(KH,'卡号1',KH,0)) 卡号5 
FROM TABLE
GROUP BY ZDH

如果卡的数量会变,那就要使用动态的行转列了,需要写存储过程