поведение лестницы с поворотными данными - PullRequest
1 голос
/ 04 октября 2010

Да здравствуют коллеги-программисты и составители запросов,

У меня есть этот красивый запрос

SELECT ID, [1] AS coL1, [15] AS coL2, [2] AS coL3, [16] AS coL4, [12] AS coL5
FROM MY_TABLE
PIVOT (sum(INT_VALUE) FOR FUND_CODE IN ([1],[2],[15],[16],[12])) AS p
--GROUP BY ID, [1] , [15]  , [2] , [16] , [12] 
ORDER BY ID ASC

Это возвращает мне данные, как это:

10001      182       NULL      NULL      NULL
10001      NULL      81        NULL      NULL
10001      NULL      NULL      182       NULL
10001      NULL      NULL      NULL      81
10002      165       NULL      NULL      NULL
10002      NULL      73        NULL      NULL
10002      NULL      NULL      165       NULL
10002      NULL      NULL      NULL      73

10001 и 10002 являются двумя первичными ключами, и я хотел бы показать мои данные так:

10001      182       81      182      81
10002      165       73      165      73

Я пытался прокомментировать это, но безрезультатно. Есть намеки? Это включает в себя COALESCE?

Ответы [ 2 ]

2 голосов
/ 08 октября 2010

ВЫБЕРИТЕ ID , SUM (1) AS 'col1' SUM (15) AS 'col2' SUM (2) AS 'col3' , Сумма (16) AS 'col4' SUM (12) AS 'col5' ИЗ СТОРОНЫ ГРУППА ПО ID

0 голосов
/ 04 октября 2010

Только в случае ...

SELECT ID,
SUM(CASE WHEN FUND_CODE = 1 THEN VR_MOVIMENTACAO_QUOTA ELSE 0 END) coL1,
SUM(CASE WHEN FUND_CODE = 15 THEN VR_MOVIMENTACAO_QUOTA ELSE 0 END) coL2,
SUM(CASE WHEN FUND_CODE = 2 THEN VR_MOVIMENTACAO_QUOTA ELSE 0 END) coL3,
SUM(CASE WHEN FUND_CODE = 16 THEN VR_MOVIMENTACAO_QUOTA ELSE 0 END) coL4,
SUM(CASE WHEN FUND_CODE = 12 THEN VR_MOVIMENTACAO_QUOTA ELSE 0 END) coL5

FROM MY_TABLE
GROUP BY ID
...