【问题标题】:Count 3 values in single column in SQL Server在 SQL Server 的单列中计算 3 个值
【发布时间】:2013-06-16 12:11:56
【问题描述】:

我有一列的值是从 0、1、2 见下文

0 = no, 1 = yes and 2 is waiting

我只想显示yes no 的计数并在哪里等待adminid=1468

 IsVerified        AdminId
    0               1468
    0               1475  
    1               1468 
    1               1468
    1               1468 
    1               1468 
    1               1475
    2               1468
    2               1466

我想将其显示为adminid=1468

No    Yes    Waiting   AdminId
1      4       1        1468

到目前为止我已经使用了

SELECT     
    COUNT(s.IsVerified) AS [Yes]
    ,COUNT(s.IsVerified) AS [No]
    ,COUNT(s.IsVerified) AS [Waiting]
    ,g.AdminId
FROM    
    tbl_Squad s, tbl_Match m, tbl_Group g
WHERE   
    m.GroupId = g.GroupId          
    --AND g.AdminId=@AdminId
    AND g.AdminId=1468          
GROUP BY         
    s.IsVerified

但它给出了三行,而我只想要一行我错了

【问题讨论】:

标签: sql sql-server count aggregate-functions


【解决方案1】:

这样的事情应该可以工作:

select sum(case when s.isverified = 0 then 1 else 0 end) no
, sum(case when s.isverified = 1 then 1 else 0 end) yes
, sum(case when s.isverified = 2 then 1 else 0 end) waiting

from tbl_squad s join tbl_group g on s.groupid = g.groupid

where g.adminid = 1468

【讨论】:

    【解决方案2】:
    select SUM(case when s.IsVerified= 0 then 1 else 0 end) as No
    , SUM(case when s.IsVerified= 1 then 1 else 0 end) as Yes
    , SUM(case when s.IsVerified= 2 then 1 else 0 end) as Waiting
    ,g.AdminId
    
    from tbl_Squad s join tbl_Group g on s.GroupId = g.GroupId
    
    where --g.adminId=@AdminId
          g.AdminId= 1468
    group by g.AdminId
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-09
      • 1970-01-01
      • 2021-02-15
      • 2022-10-12
      • 2011-05-04
      • 1970-01-01
      • 2012-02-05
      相关资源
      最近更新 更多