Изменение вертикальных данных в макет таблицы в .Net - PullRequest
0 голосов
/ 01 сентября 2009

У меня есть выходные данные SQL Server 2005, как это:

Date | Result | Sum
-----|--------|-----
8/26 |   01   | 1549
8/26 |   02   | 7972
8/26 |   03   | 4502
8/27 |   01   | 1897
8/27 |   02   | 1649
8/27 |   03   | 7949
8/28 |   01   | 8542
8/28 |   02   | 5335
8/28 |   03   | 4445

и я хочу, чтобы он отображался (в GridView?) Следующим образом:

Result | 8/26 | 8/27 | 8/28
-------|------|------|------
  01   | 1549 | 1897 | 8542
  02   | 7972 | 1649 | 5335
  03   | 4502 | 7949 | 4445

Моя текущая попытка состоит в том, чтобы сделать это через DataView, который поступает из SqlDataSource, а также из нового DataSet. Мне не очень повезло, хотя. Значения «Результат» могут быть динамическими, а даты - динамическими.

Любые советы?

Ответы [ 2 ]

3 голосов
/ 01 сентября 2009

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

вот статья MSDN о PIVOT .

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

Это моё решение. Самое сложное, чтобы заставить его работать, было понимание того, что мне пришлось использовать синтаксис WITH x as, потому что я никогда не слышал об этом раньше.

WITH x as (
    SELECT Days.Date, Disps.HisResult, SUM(CASE WHEN Historic.HisResult IS NULL THEN 0 ELSE 1 END) AS SumResult
    FROM (
        SELECT DISTINCT DATEADD(day, DATEDIFF(day, 0, DATEADD(hh, -5, HisCallDate)), 0) as Date FROM Historic
    ) AS Days
    LEFT JOIN (SELECT DISTINCT roxcoDispCode as HisResult FROM RoxcoSystem.dbo.DispCodes) AS Disps ON 1=1
    LEFT JOIN Historic ON Disps.HisResult = Historic.HisResult AND Days.Date = DATEADD(day, DATEDIFF(day, 0, DATEADD(hh, -5, HisCallDate)), 0)
    GROUP BY Days.Date, Disps.HisResult
)
SELECT * FROM x
PIVOT
(
  MAX(SumResult)
  FOR HisResult IN ([00], [01], [02], [03])
)
AS p
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...