如何在sql中有条件组?

时间:2015-01-24 06:36:10

标签: sql-server

我有一个包含此列的表格:

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

结果如下:

enter image description here

它有任何错误,但不是我的结果。当一个交易代码剂量具有条件(Transaction_MobileErrorCode =' 0')时,它会出现在_Count = 0的结果中。

我的意思是这个结果,最后一个原始:

enter image description here

2 个答案:

答案 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