SQL Pivot初探
扫描二维码
随时随地手机看文章
Pivot的语法和说明请看
http://technet.microsoft.com/zh-cn/library/ms177410.aspx
只写个例子。原表内容部分如下:
bill_table bill_comedate bill_zhje 醉江月 2012-08-20 00:00:00.000 168 大厅6号 2012-08-20 00:00:00.000 154.88 大厅1号 2012-08-20 00:00:00.000 299.2 大厅2号 2012-08-20 00:00:00.000 968 瑶池宴 2012-08-20 00:00:00.000 1530 大厅4号 2012-08-21 00:00:00.000 45 碧云深 2012-08-21 00:00:00.000 207 愿成双 2012-08-21 00:00:00.000 582 潇湘曲 2012-08-21 00:00:00.000 582 舞杨花 2012-08-22 00:00:00.000 148 舞迎春 2012-08-22 00:00:00.000 908 瑶阶草 2012-08-22 00:00:00.000 908 暮花天 2012-08-22 00:00:00.000 908 暮山溪 2012-08-22 00:00:00.000 120 暮云碧 2012-08-22 00:00:00.000 1013 暮花天 2012-08-22 00:00:00.000 120 碧桃春 2012-08-22 00:00:00.000 120 舞杨花 2012-08-22 00:00:00.000 1266 大厅1号 2012-08-23 00:00:00.000 2076 大厅2号 2012-08-23 00:00:00.000 61 大厅5号 2012-08-23 00:00:00.000 510 大厅5号 2012-08-23 00:00:00.000 976 大厅6号 2012-08-23 00:00:00.000 307 大厅1号 2012-08-24 00:00:00.000 3468 大厅2号 2012-08-24 00:00:00.000 504 大厅4号 2012-08-24 00:00:00.000 723 愿成双 2012-08-30 00:00:00.000 1068 暮山溪 2012-09-03 00:00:00.000 2404 大厅2号 2012-09-05 00:00:00.000 1389 大厅2号 2012-09-06 00:00:00.000 530 大厅4号 2012-09-06 00:00:00.000 145 大厅5号 2012-09-06 00:00:00.000 319 大厅6号 2012-09-06 00:00:00.000 56 大厅2号 2012-09-06 00:00:00.000 490 大厅2号 2012-09-06 00:00:00.000 140 大厅1号 2012-09-06 00:00:00.000 140 大厅6号 2012-08-06 00:00:00.000 1098 赛天香 2012-09-07 00:00:00.000 1600 大厅4号 2012-09-07 00:00:00.000 264 大厅3号 2012-09-07 00:00:00.000 976
用Pivot把第一列里面的值翻转成列名,下面跟上sum出来的结果。语句如下
select bill_comedate,[碧桃春],[醉江月],[大厅1号],[大厅2号],[大厅3号],[大厅4号],[大厅5号],[大厅6号] from Bill as a Pivot (sum(a.bill_zhje) FOR a.bill_table in ([碧桃春],[醉江月],[大厅1号],[大厅2号],[大厅3号],[大厅4号],[大厅5号],[大厅6号])) as PVT group by bill_comedate,[碧桃春],[醉江月],[大厅1号],[大厅2号],[大厅3号],[大厅4号],[大厅5号],[大厅6号]
得到的部分结果如下(没有把bill_table里面的写完)
bill_comedate 碧桃春 醉江月 大厅1号 大厅2号 大厅3号 大厅4号 大厅5号 大厅6号 2012-08-06 00:00:00.000 NULL NULL NULL NULL NULL NULL NULL 1098 2012-08-20 00:00:00.000 NULL NULL NULL NULL NULL NULL NULL NULL 2012-08-20 00:00:00.000 NULL NULL NULL NULL NULL NULL NULL 154.88 2012-08-20 00:00:00.000 NULL NULL NULL 968 NULL NULL NULL NULL 2012-08-20 00:00:00.000 NULL NULL 299.2 NULL NULL NULL NULL NULL 2012-08-20 00:00:00.000 NULL 168 NULL NULL NULL NULL NULL NULL 2012-08-21 00:00:00.000 NULL NULL NULL NULL NULL NULL NULL NULL 2012-08-21 00:00:00.000 NULL NULL NULL NULL NULL 45 NULL NULL 2012-08-22 00:00:00.000 NULL NULL NULL NULL NULL NULL NULL NULL 2012-08-22 00:00:00.000 120 NULL NULL NULL NULL NULL NULL NULL 2012-08-23 00:00:00.000 NULL NULL NULL NULL NULL NULL NULL 307 2012-08-23 00:00:00.000 NULL NULL NULL NULL NULL NULL 510 NULL 2012-08-23 00:00:00.000 NULL NULL NULL NULL NULL NULL 976 NULL 2012-08-23 00:00:00.000 NULL NULL NULL 61 NULL NULL NULL NULL 2012-08-23 00:00:00.000 NULL NULL 2076 NULL NULL NULL NULL NULL 2012-08-24 00:00:00.000 NULL NULL NULL NULL NULL 723 NULL NULL 2012-08-24 00:00:00.000 NULL NULL NULL 504 NULL NULL NULL NULL 2012-08-24 00:00:00.000 NULL NULL 3468 NULL NULL NULL NULL NULL 2012-08-27 00:00:00.000 NULL NULL NULL NULL NULL NULL NULL NULL 2012-08-30 00:00:00.000 NULL NULL NULL NULL NULL NULL NULL NULL 2012-09-03 00:00:00.000 NULL NULL NULL NULL NULL NULL NULL NULL 2012-09-05 00:00:00.000 NULL NULL NULL 1389 NULL NULL NULL NULL 2012-09-06 00:00:00.000 NULL NULL NULL NULL NULL NULL NULL 56 2012-09-06 00:00:00.000 NULL NULL NULL NULL NULL NULL 319 NULL 2012-09-06 00:00:00.000 NULL NULL NULL NULL NULL 145 NULL NULL 2012-09-06 00:00:00.000 NULL NULL NULL 140 NULL NULL NULL NULL 2012-09-06 00:00:00.000 NULL NULL NULL 490 NULL NULL NULL NULL 2012-09-06 00:00:00.000 NULL NULL NULL 530 NULL NULL NULL NULL 2012-09-06 00:00:00.000 NULL NULL 140 NULL NULL NULL NULL NULL 2012-09-07 00:00:00.000 NULL NULL NULL NULL NULL NULL NULL NULL 2012-09-07 00:00:00.000 NULL NULL NULL NULL NULL 264 NULL NULL 2012-09-07 00:00:00.000 NULL NULL NULL NULL 976 NULL NULL NULL