状态都很重要

时间:2012-07-31 10:07:32

标签: sql

我有一个如下表(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

我试过很多方法可以请你给我查询

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