2016-12-28 106 views
0

在SQL Server 2012中,我需要查询返回中每个元素的值,其中子句。SQL查询结果全部Where Where子句

select count(id) idCount, squad from dbo.Project 
where id between 60000 and 80000 
and status = ('Complete') and squad in ('Mechanical', 'Civil', 'Electrical', 'Architectural') 
and fiscalyear = 2018 
group by squad 
order by squad asc 

查询返回

idCount Squad 
1  Civil 
3  Electrical 
3  Mechanical 

我想什么输出为是

idCount  Squad 
    0  Architectural 
    1  Civil 
    3  Electrical 
    3  Mechanical 

回答

2

你需要一个left join。在SQL Server中,你可以这样做:

select count(p.id), v.squad 
from (values ('Mechanical'), ('Civil'), ('Electrical'), ('Architectural') 
    ) v(squad) left join 
    dbo.Project p 
    on v.squad = p.squad and 
     p.id between 60000 and 80000 and 
     p.fiscalyear = 2018 
group by v.squad 
order by v.squad asc ; 

注意,所有where条件需要on子句中去,以防止不匹配值的意外过滤。

+0

非常感谢! –