2015-02-24 61 views
0

堆垛機, 我一直寫在SQL語法時,認識PIVOT的掙扎......SQL樞軸與SUM組合/數

我的數據格式:

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子句。

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

嘗試'計數()',而不是'總和()'。你不能總結一個字符串。 – 2015-02-24 20:55:14

回答

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'與查詢中使用的表名或別名不匹配。 消息107,級別15,狀態1,行12 列前綴'h'與查詢中使用的表名或別名不匹配。 – 2015-02-24 20:57:14

+0

試圖讓列名成爲「BA」,「FA」等。不知道我是否清楚。 – 2015-02-24 20:58:10

+0

@SourceMatters檢查更新的答案 – 2015-02-24 20:59:40