我的SQL Server数据库中有这个查询:
Date Type Amount
1392/06/21 Ticket 1350000
1392/06/22 Free 9650000
1392/06/22 Market 10820000
1392/06/22 Ticket 1050000
1392/06/21 Market 10040000
1392/06/20 Free 11750000
1392/06/20 Ticket 960000
1392/06/21 Free 13050000
1392/06/20 Market 9220000
我想把它投到这个:
Date Ticket Free Market
1392/06/20 960000 11750000 9220000
1392/06/21 1350000 13050000 10040000
1392/06/22 1050000 9650000 10820000
我能想到的唯一解决方案是花费很长时间才能读取我的.net应用程序的第一个查询,然后使用foreach
循环将其分组到那里,但我宁愿学习基本解决方案T-SQL提供的。
有没有人有任何线索在T-SQL中这样做?
答案 0 :(得分:3)
作为Pivot命令的替代方法,您可以执行以下操作:
SELECT Date,
SUM(CASE WHEN Type = 'Ticket' THEN Amount ELSE 0 END) AS Ticket,
SUM(CASE WHEN Type = 'Market' THEN Amount ELSE 0 END) AS Market,
SUM(CASE WHEN Type = 'Free' THEN Amount ELSE 0 END) AS Free
FROM YourTable
GROUP BY Date
答案 1 :(得分:3)
您正在处理的是TSQL Pivot命令的经典案例。
请查看http://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx