将三个查询的结果组合成一个数据集交叉应用或加入

时间:2014-11-12 21:54:10

标签: sql cross-apply

如何将三个查询的结果合并到一个数据集中?交叉申请或加入?

create table tbl_A
(
Dept varchar(5),
DocCountA int
);

create table tbl_b
(
Dept varchar(5),
DocCountB int
);

create table tbl_c
(
Dept varchar(5),
DocCountC int
);

insert into tbl_A
values ('XX',12),('YY',14),('ZZ',16)

insert into tbl_b
values ('XX',20),('YY',25),('ZZ',27)

insert into tbl_c
values ('XX',30),('YY',35)

select * from tbl_A  
select * from tbl_B  
select * from tbl_C  

**tbl_A**  
Dept    DocCountA  
XX  12  
YY  14  
ZZ  16  


**tbl_B**  
Dept    DocCountB  
XX  20   
YY  25    
ZZ  27  

**tbl_C**  
Dept    DocCountC  
XX  30    
YY  35  

结果

Dept DocCountA DocCountB DocCountC  
XX  
YY  
ZZ    

表C有两个结果ZZ将为空白

这可以使用两个查询 三个会很棒!

从tbl_A中选择* A 交叉申请

从tbl_b B中选择B.DocCountB 其中B.Dept = A.Dept
)sod

1 个答案:

答案 0 :(得分:2)

每个表上的左连接将允许您获取所有3个部门及其存在的计数。

select
  a.dept, DocCountA, DocCountB, DocCountC
from
  tbl_a a
  left join tbl_b b on a.dept = b.dept
  left join tbl_c c on a.dept = c.dept

Here is a working fiddle