我有一个如下表(MSSql)
Name Status
---- -------
kmk Success
kmk Success
mvk Fail
per Success
Per Fail
mvk Fail
我需要提供如下结果的查询
Name Status Count
---- ------- -----
kmk Success 2
kmk Fail 0
mvk Success 0
mvk Fail 2
Per Success 1
Per Fail 1
我尝试使用group by
,但我得到的结果如下面的My Query is
(Select Name,[Status],COUNT([Status]) As Count From Checking group by [Status],Name)
Name Status Count
---- ------- -----
kmk Success 2
mvk Fail 2
Per Success 1
Per Fail 1
我试过很多方法可以请你给我查询
答案 0 :(得分:2)
您可以尝试以下操作。它适用于sqlite3,根据您的SQL引擎,您的里程可能会有所不同:
select
name,
"Success" as status,
sum(case when status = "Success" then 1 else 0 end) as count
from checking group by name
union
select
name,
"Fail" as status,
sum (case when status = "Fail" then 1 else 0 end) as count
from checking group by name;
SQLite3的结果:
kmk|Fail|0
kmk|Success|2
mvk|Fail|2
mvk|Success|0
per|Fail|1
per|Success|1