Sql 状态所有计数

Sql 状态所有计数,sql,Sql,我有一个如下表(MSSql) 我需要的查询结果如下 Name Status Count ---- ------- ----- kmk Success 2 kmk Fail 0 mvk Success 0 mvk Fail 2 Per Success 1 Per Fail 1 我尝试了groupby,但得到的结果如下:我的查询是 (Select Name,[Status],COUNT([Status]) As Count From Checking group b

我有一个如下表(MSSql)

我需要的查询结果如下

Name Status  Count
---- ------- -----
kmk  Success 2
kmk  Fail    0
mvk  Success 0
mvk  Fail    2
Per  Success 1
Per  Fail    1
我尝试了
groupby
,但得到的结果如下:我的查询是

(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

我尝试了很多方法,你能给我一个查询吗。它与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

您应该熟悉GROUPBY子句和COUNT函数。您尝试过什么?显示您的查询。重写您的问题以更好地了解您的表结构我尝试使用group by,但我得到的输出如下:名称状态Res kmk Success 2 mvk Fail 2 mvk Success 1 Per Fail 1 Per Success 1尝试使用包含两种状态(“Success”、“Fail”)的表进行外部联接,和你一样使用你的计数/分组。或者,如果没有其他方法有效,请尝试使用具有唯一名称的笛卡尔乘积和带有状态的两行表。然后,将这个笛卡尔积与您的
检查表连接起来,以获得计数。
kmk|Fail|0
kmk|Success|2
mvk|Fail|2
mvk|Success|0
per|Fail|1
per|Success|1