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

あなたが扱っているのは、TSQL Pivot コマンドの典型的なケースです。

http://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspxをご覧ください。

于 2013-09-19T16:30:28.013 に答える
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 に答える