0

我从我的 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 中这样做?

4

2 回答 2

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
于 2013-09-19T16:19:36.713 回答
3

您正在处理的是 TSQL Pivot 命令的经典案例。

请查看http://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx

于 2013-09-19T16:30:28.013 回答