日期:2014-05-18  浏览次数:20373 次

求一sql语句,交叉表
求一sql语句,交叉表

有这样一个表
=====================================================
车号         吨数       时间                                             装车点
8               15             2006-01-01   08:00:00               1号站
14             20             2006-01-01   08:00:00               2号站
50             15             2006-01-01   08:00:00               1号站
2               18             2006-01-01   08:01:00               4号站
8               15             2006-01-01   09:00:00               1号站
4               16             2006-01-01   09:00:00               5号站

=====================================================

要生成以下表格(装车点也许会有增减)


车号   1号站车数合计     1号站吨数合计   2号站车数合计     2号站吨数合计   4号站车数合计     4号站吨数合计   5号站车数合计     5号站吨数合计   车数合计     吨数合计
8
14
50
2
4

------解决方案--------------------

Declare @S Nvarchar(4000)
Select @S = 'Select 车号 '
Select @S = @S + ', SUM(Case 装车点 When ' ' ' + 装车点 + ' ' ' Then 1 Else 0 End) As [ ' + 装车点 + '车数合计] '
+ ', SUM(Case 装车点 When ' ' ' + 装车点 + ' ' ' Then 吨数 Else 0 End) As [ ' + 装车点 + '吨数合计] '
From 表 Group By 装车点
Select @S = @S + ' , Count(*) As 车数合计, SUM(吨数) As 吨数合计 From 表 Group By 车号 '
EXEC(@S)