首页 > 解决方案 > 计算多个条件下的记录

问题描述

我的查询是计算表中发生的事务数。以下是我的查询:

select tt.transaction_key, tt.description, t.mode, count(t.TransactionType) as Frequency
from transaction_names tt left join
     transaction_report_data t
     on tt.transaction_key = t.TransactionType and
        t.created >='2017-04-11' and t.created <= '2018-04-13'
group by tt.transaction_key, tt.description, t.mode;

我还需要仅成功或具有 t.status = 'success' 的事务数的计数/频率。

请帮助我如何调整这个“where”子句来计算这种类型的记录。

提前致谢。

标签: sqlsql-serversql-server-2008

解决方案


您可以使用聚合来做一个案例,如下所示

select 
tt.transaction_key, 
tt.description, 
t.mode, 
count(t.TransactionType) as Frequency,
Sum(case when t.status='success' then 1 else 0 end) as SuccessfulTransactions
from transaction_names tt left join
     transaction_report_data t
     on tt.transaction_key = t.TransactionType and
        t.created >='2017-04-11' and t.created <= '2018-04-13'
group by tt.transaction_key, tt.description, t.mode;

推荐阅读