从其他表中的其他列添加丢失的记录

时间:2019-03-12 19:22:48

标签: sql sql-server join

我有2张桌子:

表A:

    A | B | C   |  D
   qwe  4  2019   10
   qwe  2  2020   5
   qwe  5  2019   5

表B:

A | B 
3  2019
4  2019
5  2019
6  2019
7  2019
8  2019
9  2019
10 2019
11 2019
12 2019
1  2020
2  2020

我希望输出表包含表A中表B的所有数字和年份。因此,文本qwe应该显示12次,并带有相应的数字。

输出表:

A  | B | C  | D
qwe  3  2019  0
qwe  4  2019  10
qwe  5  2019  5
qwe  6  2019  0
qwe  7  2019  0
qwe  8  2019  0
qwe  9  2019  0
qwe 10 2019   0
qwe 11 2019   0
qwe 12 2019   0
qwe 1  2020   0
qwe 2  2020  5

注意:表A比qwe包含更多的值,因此我尝试为所有不同的记录复制12个值。对于不存在的记录,D列应显示0。

我尝试了完全外部联接,但是完全外部联接为表A中的qwe的每个记录产生12条记录。

2 个答案:

答案 0 :(得分:0)

最后一栏很简单。 。 。 left join

select b.a, b.b, coalesce(a.d, 0) as d
from b left join
     a
     on b.a = a.b and b.b = a.c;

第一列实际上没有意义,但是也许:

select max(a.a) over () as a,
       b.a as b, b.b as c, coalesce(a.d, 0) as d
from b left join
     a
     on b.a = a.b and b.b = a.c;

答案 1 :(得分:-1)

您可以添加不同的 从...中选择不同的*