2015-02-24 65 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