2013-07-02 64 views
1

我想创建一个合并来自同一个表的两个查询结果的查询。合并同一个表中的两个select语句吗?

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中使用此结果。

回答

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

出现此错误:Msg 156,Level 15,State 1,Line 4 关键字'from'附近的语法不正确。 – Arantuath

+0

对不起,只是缺少一个括号的总和(不同(Case_Status ='打开',然后1其他0结束的情况下)) – Arantuath

+0

是的,只是编辑它,但使其更简单。在这种情况下不同(假设Case_ID是您的主键) – eglasius

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' 

可能只是缺少两个字段之间的逗号?

+0

select (select count(distinct(Case_ID))as expr1 from dbo.Cases) ,(select count(distinct(Case_ID))as expr2 from dbo Case_Status ='Open'的情况) – Arantuath

+0

工程最后只需要一个额外的支架。然而,我不幸的列名称? – Arantuath

1

如果你真的需要数截然不同的情况:

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

注:如果Case_IdCases独特,那么distinct是没有必要的。但是,您在原始查询中使用它,表明可能并非如此。 distinct表现比常规的count()sum()差。

相关问题