Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在sql中使用条件group by?_Sql Server - Fatal编程技术网

Sql server 如何在sql中使用条件group by?

Sql server 如何在sql中使用条件group by?,sql-server,Sql Server,我有一个包含以下列的表: tblTransaction ( Transaction_ID, Transaction_RequestTransactionCode, Transaction_MobileErrorCode ) 我想得到每个交易的计数,它的MobileErrorCode是0 所以我的问题是这样的: SELECT Transaction_RequestTransactionCode, COUNT(Transaction_ID) AS _Cou

我有一个包含以下列的表:

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
结果是:

它没有任何错误,但不是我的结果。当一个事务代码具有该条件(事务\u MobileErrorCode='0')时,它将以\u Count=0的形式出现在结果中

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


要执行条件聚合,请使用
case
语句聚合将条件从
where
子句移动到
Count

SELECT Transaction_RequestTransactionCode,
       Count(CASE
               WHEN Transaction_MobileErrorCode = '0' THEN Transaction_ID
             END) AS _Count
FROM   tblTransaction
GROUP  BY Transaction_RequestTransactionCode 

要执行条件聚合,请使用
case
语句聚合将条件从
where
子句移动到
Count

SELECT Transaction_RequestTransactionCode,
       Count(CASE
               WHEN Transaction_MobileErrorCode = '0' THEN Transaction_ID
             END) AS _Count
FROM   tblTransaction
GROUP  BY Transaction_RequestTransactionCode 

使用
sum
对要计数的条件求和

SELECT        Transaction_RequestTransactionCode, 
              SUM(case when Transaction_MobileErrorCode = '0' then 1 else 0 end) AS _Count
FROM          tblTransaction
GROUP BY Transaction_RequestTransactionCode

使用
sum
对要计数的条件求和

SELECT        Transaction_RequestTransactionCode, 
              SUM(case when Transaction_MobileErrorCode = '0' then 1 else 0 end) AS _Count
FROM          tblTransaction
GROUP BY Transaction_RequestTransactionCode

伯爵不能使用条件。无论是
0
还是
1
@juergend-真的!!那不是真的,我只是检查了一下。你说得对。我也是:)你可以使用一个条件,但你必须确保
false
部分是
null
@juergend,因为我们没有使用
否则
部分是
case
语句,所有其他值都将是
null
并且那些不会被计数Count不能使用条件。无论是
0
还是
1
@juergend-真的!!那不是真的,我只是检查了一下。你说得对。我也是:)你可以使用一个条件,但你必须确保
false
部分是
null
@juergend,因为我们没有使用
,否则
部分是
case
语句所有其他值都将是
null
并且这些值不会被计算如果这是SQLServer问题,请在你的问题中添加“SQLServer”标记,谢谢。如果是SQLServer问题,请在问题中添加“SQLServer”标记,谢谢。