SQL 枢轴结合 SUM/Count
SQL Pivot combined with a SUM/Count
堆垛机,
当用 SQL 语法编写时,我一直在努力理解 PIVOT...
我的数据格式:
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
试试这个
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
堆垛机, 当用 SQL 语法编写时,我一直在努力理解 PIVOT...
我的数据格式:
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
试试这个
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