我可以使用一些帮助。我有一个查询,使用Case和Like语句计算故障代码的数量,并在日期使用Where子句。然后我将它与辅助查询联合起来。唯一的区别是日期。它可以工作,但返回
中的值 Fault Code Count
20k 71
60k 167
20k 86
60k 178
它返回“计数”列下的辅助计数。但是,我想添加另一列。例如:
Fault Code CountA CountB
20k 71 86
60k 167 178
有什么建议吗?我是否创建临时表?
这是我的代码。
SELECT
CASE
WHEN FaultCode LIKE '60%' THEN '60k'
WHEN FaultCode LIKE '20%' THEN '20k'
END AS FaultCode
, COUNT(FaultCode) AS Day1
FROM RmaSummary
Where CreationTime > '2016-03-30' AND CreationTIme < '2016-03-31' AND
ClosedTime Is null AND (FaultCode LIKE '60%' OR FaultCode LIKE '20%')
AND FaultCode <> '20000' AND FaultCode <> '60052' AND FaultCode <> '0'
GROUP BY
CASE
WHEN FaultCode LIKE '60%' THEN '60k'
WHEN FaultCode LIKE '20%' THEN '20k'
END
Union All
SELECT
CASE
WHEN FaultCode LIKE '60%' THEN '60k'
WHEN FaultCode LIKE '20%' THEN '20k'
END AS FaultCode
, COUNT(FaultCode) AS Day2
FROM RmaSummary
Where CreationTime > '2016-03-31' AND CreationTIme < '2016-04-01' AND
ClosedTime Is null AND (FaultCode LIKE '60%' OR FaultCode LIKE '20%')
AND FaultCode <> '20000' AND FaultCode <> '60052' AND FaultCode <> '0'
GROUP BY
CASE
WHEN FaultCode LIKE '60%' THEN '60k'
WHEN FaultCode LIKE '20%' THEN '20k'
END
答案 0 :(得分:1)
使用Conditional Aggregation
代替UNION
,这样可以获得预期格式的结果。
仅当faultcode
在给定日期范围内落下
SELECT CASE
WHEN faultcode LIKE '60%' THEN '60k'
WHEN faultcode LIKE '20%' THEN '20k'
END AS FaultCode,
Count(CASE
WHEN creationtime > '2016-03-30'
AND creationtime < '2016-03-31' THEN faultcode
END) AS Day1,
Count(CASE
WHEN creationtime > '2016-03-31'
AND creationtime < '2016-04-01' THEN faultcode
END) AS Day2
FROM rmasummary
WHERE closedtime IS NULL
AND ( faultcode LIKE '60%'
OR faultcode LIKE '20%' )
AND faultcode <> '20000'
AND faultcode <> '60052'
AND faultcode <> '0'
GROUP BY CASE
WHEN faultcode LIKE '60%' THEN '60k'
WHEN faultcode LIKE '20%' THEN '20k'
END