2013-06-16 2 views
0

У меня есть значения столбцов из 0, 1, 2 см ниже3 Количество значений в одном столбце в SQL Server

0 = no, 1 = yes and 2 is waiting 

Я просто хочу показать счетчик да нет и ждет где 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 [email protected] 
    AND g.AdminId=1468   
GROUP BY   
    s.IsVerified 

, но он дает три строки в то время как я хочу только одну строку, где я неправильно

+0

[Плохие привычки пинать: используя старые -style JOINs] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx) - эта запятая в старом стиле -раздельный список таблиц * стиль был отменен с помощью ANSI - ** 92 ** SQL Standard (более ** 20 лет ** назад) –

ответ

3

Что-то, как это должно работать:

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 
1
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 [email protected] 
     g.AdminId= 1468 
group by g.AdminId 
Смежные вопросы