我有一张桌子,如下所示:
CallID | CompanyID | OutcomeID ---------------------------------- 1234 | 3344 | 36 1235 | 3344 | 36 1236 | 3344 | 36 1237 | 3344 | 37 1238 | 3344 | 39 1239 | 6677 | 37 1240 | 6677 | 37
我想创建一个SQL脚本,该脚本计算Sales结果的数量以及所有其他尝试的数量(<> 36),例如:
CompanyID | SalesCount | NonSalesCount ------------------------------------------ 3344 | 3 | 1 6677 | 0 | 2
有没有办法做一个包含像COUNT(CallID WHERE OutcomeID = 36)这样的条件的COUNT()?
您可以对合计使用CASE表达式,以根据outcomeId值获得总计:
outcomeId
select companyId, sum(case when outcomeid = 36 then 1 else 0 end) SalesCount, sum(case when outcomeid <> 36 then 1 else 0 end) NonSalesCount from yourtable group by companyId;
参见带有演示的SQL Fiddle