2015-02-24 3 views
0

Штабелеры, Я всегда боролся с пониманием PIVOT-х, когда написано в синтаксисе SQL ...SQL Pivot в сочетании с SUM/Count

Мой формат данных:

CONTID STCODE 
8203 BA 
8203 BA 
8203 UY 
8203 UY 
8203 UY 
8203 FA 
8203 FA 
8203 FA 
8203 UY 
8203 UY 
8203 *LC 
8203 *LC 
8203 *LC 
8203 UY 

Намеченный выход:

CONTID BA *LC UY FA 
8203  2  3  6  3 

Моя ужасная попытка до сих пор ... (я не знаю, что поставить в скобки или ВЫБРАТЬ положение.

SELECT c.CONTID, [STCODE] AS 'Burglary Alarm', [STCODE] AS 'Late-to-close' 
FROM CUSTOMER c LEFT JOIN CLOGS15 h ON c.SERIALNO = h.SERIALNO 
PIVOT 
(
SUM(h.STCODE) 
FOR h.STCODE 
IN ([BA], [*LC]) 
) AS pvt 
+0

Попробуйте 'COUNT()' вместо 'суммы()'. Вы не можете суммировать строку. –

ответ

0

Попробуйте

SELECT 
CONTID, 
[BA] AS 'Burglary Alarm', 
[*LC] AS 'Late-to-close', 
[UY], 
[FA] 
FROM 
(
    SELECT c.CONTID, 
    [STCODE] 
    FROM CUSTOMER c 
    LEFT JOIN CLOGS15 h ON c.SERIALNO = h.SERIALNO 
    WHERE C.CONTID LIKE '8203' AND h.EVTYPE = 1 
    AND DATEADD(hour,-6,h.EVDATE) 
    BETWEEN '2015-02-23 06:30:00.000' AND '2015-02-24 06:30:00.000' 
) SRC 
PIVOT 
(
    COUNT(SRC.STCODE) 
    FOR SRC.STCODE IN ([BA], [*LC], [UY], [FA]) 
) AS pvt 
+0

Это дает мне ошибку: Msg 107, Level 15, State 1, Line 11 Префикс столбца «h» не совпадает с именем таблицы или псевдонимом, используемым в запросе. Msg 107, Level 15, State 1, Line 12 Префикс столбца 'h' не совпадает с именем таблицы или псевдонимом, используемым в запросе. –

+0

Попытка получить имена столбцов как «BA», «FA» и т. Д. Не уверен, что я был в этом уверен. –

+0

@SourceMatters проверить обновленный ответ –