我有一个包含此列的表格:
tblTransaction
(
Transaction_ID,
Transaction_RequestTransactionCode,
Transaction_MobileErrorCode
)
我希望得到每笔交易的数量,它的MobileErrorCode为0。
所以我的查询是这样的:
SELECT Transaction_RequestTransactionCode, COUNT(Transaction_ID) AS _Count
FROM tblTransaction
WHERE (Transaction_MobileErrorCode = '0')
GROUP BY Transaction_RequestTransactionCode
结果如下:
它有任何错误,但不是我的结果。当一个交易代码剂量具有条件(Transaction_MobileErrorCode =' 0')时,它会出现在_Count = 0的结果中。
我的意思是这个结果,最后一个原始:
答案 0 :(得分:2)
要执行条件聚合,请使用where
语句聚合将条件从Count
子句移动到case
SELECT Transaction_RequestTransactionCode,
Count(CASE
WHEN Transaction_MobileErrorCode = '0' THEN Transaction_ID
END) AS _Count
FROM tblTransaction
GROUP BY Transaction_RequestTransactionCode
答案 1 :(得分:2)
使用sum
来总结您想要计算的条件
SELECT Transaction_RequestTransactionCode,
SUM(case when Transaction_MobileErrorCode = '0' then 1 else 0 end) AS _Count
FROM tblTransaction
GROUP BY Transaction_RequestTransactionCode