Требуется помощь ASP.NET SQL Query - PullRequest
2 голосов
/ 22 июня 2009

У меня есть такой результат из SQL-запроса

Month    Day  Customer     Item
------------------------------------------
January   1   John         Pencil
January   1   Jack         ---
January   1   Steve        Stapler
January   2   John         ---
January   2   Jack         ---
January   2   Steve        VisitingCard
January   3   John         ---
January   3   Jack         Marker
January   3   Steve        ---
January   4   John         ---
January   4   Jack         ---
January   4   Steve        ---
January   5   John         Scrapbook
January   5   Jack         ---
January   5   Steve        ---
....
....
....
February  1   John         ---
February  1   Jack         ---
February  1   Steve        Marker

Я бы хотел, чтобы это было представлено в виде сетки asp.net, как показано ниже

                             January
Customer 1 2 3 4 5 6 7 8 9 10 11 ... 25 26 27 28 29 30 31
---------------------------------------------------------
John     P - - - N - - - - -- --     -- -- -- -- -- -- --
Jack     - - M - - - - - - -- --     -- -- -- -- -- -- --
Steve    S V - - - - - - - -- --     -- -- -- -- -- -- --
                             February
Customer 1 2 3 4 5 6 7 8 9 10 11 ... 25 26 27 28
------------------------------------------------
John     - - - - - - - - - -- --     -- -- -- --
Jack     - - - - - - - - - -- --     -- -- -- --
Steve    M - - - - - - - - -- --     -- -- -- --

Как я могу сделать это в SQL Server 2005 или asp.net 2.0?

Пожалуйста, дайте пример запроса для PIVOT, так как он требует использования некоторой агрегатной функции.

Ответы [ 4 ]

4 голосов
/ 22 июня 2009

Требуется команда Pivot . Я не знаком с использованием команды, но у geekswithblogs есть хорошее руководство по ее использованию.

3 голосов
/ 22 июня 2009

Вы не можете (чисто) достичь этого, используя функцию PIVOT, поскольку функция PIVOT требует предварительного определения столбцов, которые выводятся.

Поскольку месяцы имеют разное количество дней, вам придется написать 12 запросов.

Поворот IMO всегда должен выполняться как часть пользовательского интерфейса. Агрегация является подходящей вещью в конце SQL, хотя

РЕДАКТИРОВАТЬ: Если вы объясните, как на самом деле строится ваша сетка данных (т.е. откуда взята P и т. Д.), То я могу помочь вам сгенерировать подходящий SQL.

1 голос
/ 22 июня 2009

Я думаю, что вы хотите посмотреть на использование команды PIVOT в вашем запросе SQL.

0 голосов
/ 08 сентября 2009

Возможно, вы захотите использовать такой инструмент, как DevExpress , который предоставляет вам сводную таблицу . Затем вы можете привязать сводную таблицу к вашим данным, и она сделает всю работу за вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...