2013-09-19 2 views
0

У меня есть этот запрос из моей базы данных SQL Server:Cast записи в столбцах с группировкой

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

Посмотрите на команду TSQL Pivot: http://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx –

+0

@YuriyGalanter это именно то, что мне нужно, спасибо. Я следую ссылке. Если вы ответите ниже, я соглашусь с тем, чтобы другие пользователи, имеющие один и тот же вопрос, могли проверить ответ. Еще раз спасибо. –

+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 
3

Что вы имеете дело с классическим случаем для команды TSQL Pivot.

Пожалуйста, обратите внимание на http://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx

+0

Извините, я не могу принять ссылку в качестве ответа, пожалуйста, предоставьте полный код, и я отвечу на него. Благодарю. –

+0

Ум ... делайте небольшое исследование самостоятельно? –

+0

Если у вас по-прежнему возникают проблемы, я немного обновлю код с кодом, который в настоящее время вызван на время. –

Смежные вопросы