合并来自同一个表的两个select语句?

时间:2013-07-02 12:18:37

标签: sql-server

我想创建一个查询,该查询合并来自同一个表的两个查询的结果。

select
(select count(distinct(Case_ID)) as expr1 from  dbo.Cases)
(select count(distinct(Case_ID)) as expr2 from dbo.Cases where Case_Status = 'Open')

上面会产生两组结果,我想要的是expr1&的一组结果。 expr2作为两个单独的列。我稍后会在SRSS中使用此结果。

3 个答案:

答案 0 :(得分:2)

select 
     count(*) as expr1, 
     sum(case when Case_Status = 'Open' then 1 else 0 end)
from dbo.Cases

答案 1 :(得分:1)

看起来你非常接近。这应该工作

select
  (select count(distinct(Case_ID)) as expr1 from  dbo.Cases)
, (select count(distinct(Case_ID)) as expr2 from dbo.Cases where Case_Status = 'Open'

可能只是错过了两个字段之间的逗号?

答案 2 :(得分:1)

如果你真的需要计算不同的案例:

select count(distinct case_id) as NumCases, 
       count(case when Case_Status = 'Open' then case_id end) as NumOpen
from dbo.Cases;

注意:如果Case_Id中的Cases是唯一的,则distinct不是必需的。但是,您在原始查询中有它,表明情况可能并非如此。 distinct的效果比常规count()sum()差。