Sql server 需要关于获取分组计数的帮助吗

Sql server 需要关于获取分组计数的帮助吗,sql-server,Sql Server,我有一个包含以下列的SQL表 表1 Site Det FailFlag Comments ModifiedDate ModifiedBy ABT A01 F Dfasdf 10/11/2011 Anna ABT A01 F dsfsdf 15/12/2012 Mand ABT A01 Rds 30/03/2011 Tim ABT A01 G

我有一个包含以下列的SQL表


表1

Site  Det  FailFlag  Comments  ModifiedDate  ModifiedBy    
ABT   A01     F      Dfasdf    10/11/2011    Anna
ABT   A01     F      dsfsdf    15/12/2012    Mand
ABT   A01            Rds       30/03/2011    Tim
ABT   A01            GHDs      02/12/2012    Andy
ABT   A02     F      dfd       09/05/2012    Anna
ABT   A02            sdada     11/02/2013    Kathy
ABT   A02            Dfg       15/05/2011    Rob
TRG   A01            sdasd     16/04/2010    Richard
TRG   K05            jksdh     23/04/2012    Mark
KLD   KO5     F      sd        18/05/2013    Jim
KLD   KO5            dsfsd     10/03/2012    James
KLD   KO5            sdsd      12/05/2011    Luther
我需要将以下内容作为输出:

Site  Det  Count  CountOfFailures
ABT   A01     4      2
ABT   A02     3      1
TRG   A01     1      0
TRG   K05     1      0
KLD   KO5     3      1
我知道我可以按站点和Det分组并获得计数,但无法获得失败次数的计数

Select Site,Det, Count(*) AS [Count] from Table1  
group by Site,Det  order by Count
需要相同的帮助。

尝试以下方法:-

  Select site,det,
  FlagCount = sum(case when FailFlag='F' then 1 else 0 ENd) 
  from yourTable
  group by Site,Det
  order by Site
输出

  +------+-----+-----------+
  | site | det | FlagCount |
  +------+-----+-----------+
  | ABT  | A01 |         2 |
  | ABT  | A02 |         1 |
  | KLD  | KO5 |         1 |
  | TRG  | A01 |         0 |
  | TRG  | K05 |         0 |
  +------+-----+-----------+

你可以试试案例陈述

SELECT Site, Det, COUNT(*) AS [Count], SUM(CASE WHEN FailFlag  = 'F' THEN 1 ELSE 0 END) AS CountOfFailures 
FROM Table1
GROUP BY Site, Det

像这样的怎么样

Select  [Site],
        [Det], 
        Count(*) AS [Count],
        SUM(CASE WHEN FailFlag = 'F' THEn 1 ELSE 0 END) [CountFailed]
from    Table1  
group by    [Site],
            [Det]  
order by    [Count]

您需要在where或group by子句中添加case,case FailFlag='F',然后将1或0作为FailFlagNum并计数。谢谢Praveen。这正是我一直在寻找的。这很有效。