在SQL Server中将查询输出组合成一个汇总表



Q1输出

DogCnt
101

Q2输出

CatCnt
6

第三季度输出
BirdCnt
21

我如何结合两个查询输出来生成这个输出?

Animal  Cnt
Dog     101
Cat       6
Bird     21

可以与UNION ALL:

结合使用
SELECT Animal = 'Dog', Cnt = DogCnt FROM (<Q1>) AS Q1
UNION ALL
SELECT Animal = 'Cat', CatCnt FROM (<Q2>) AS Q2
UNION ALL
SELECT Animal = 'Bird', BirdCnt FROM (<Q3>) AS Q3;

但是如果所有这些源查询最初来自同一个表,那么绝对有一种更有效的方法来做到这一点(对于细节,您需要提供更多细节,例如表结构是什么以及如何获得这些计数)。

您可以使用多个CTE:

;WITH Q1 (
<query here>
), Q2 (
<query here>
), Q3 (
<query here>
)
select 'dog' as animal, DogCnt
from q1 
union all
select 'Cat' as animal, CatCnt
from q2
union all
select 'Bird' as animal, BirdCnt
from q3;

最新更新