结合两个SQL Server表的结果,即使它们没有公共行

时间:2017-02-01 02:56:40

标签: sql-server

我在SQL Server中有两个表:

表1:

Silo    Material    F2601 11 This Month
---------------------------------------
1   Bottle Cullet   0
2   Salt Cake   832
2   Sand    0
3   03 Soda Ash 466430
4   Fluorspar   2820
5   Barytes 2393
6   06 Borax    297405
7   Mixed Cullet    12377
8   Syenite 179880
9   09 Bottle Cullet    0
10  10 Sand 1356551
11  11 BD Lime  164171
12  12 EP Dust  13745
13  Fluorspar   14236
14  Bottle Cullet   0
15  Bottle Cullet   0
16  Syenite 0

表2:

Silo    Material    F2601 11 Last Month
---------------------------------------
1   Bottle Cullet   0
2   Sand    0
3   03 Soda Ash 467382
4   Fluorspar   3758
5   Barytes 5028
6   06 Borax    318729
7   Mixed Cullet    20955
8   Syenite 151361
9   09 Bottle Cullet    0
10  10 Sand 1393186
11  11 BD Lime  169514
12  12 EP Dust  11905
13  Fluorspar   0
14  Bottle Cullet   0
14  Bottle Cullet  14   0
15  Bottle Cullet   0
16  Syenite 0

我正在寻找......

的查询结果
Silo    Material    F2601 11 This Month F2601 11 Last Month
------------------------------------------------------------
1   Bottle Cullet   0   0
2   Salt Cake   832     0
2   Sand    0   0
3   03 Soda Ash 466430  467382
4   Fluorspar   2820    3758
5   Barytes 2393    5028
6   06 Borax    297405  318729
7   Mixed Cullet    12377   20955
8   Syenite 179880  151361
9   09 Bottle Cullet    0   0
10  10 Sand 1356551 1393186
11  11 BD Lime  164171  169514
12  12 EP Dust  13745   11905
13  Fluorspar   14236   0
14  Bottle Cullet   0   0
14  Bottle Cullet  14   0     0
15  Bottle Cullet   0   0
16  Syenite 0   0

非常感谢任何帮助。好像我想组合列,但需要存在于一个而不是另一个中的列放入结果集中,对于该相应表中不存在的列,该列为零。

1 个答案:

答案 0 :(得分:0)

我不确定是否理解这个问题。但我会在ID上使用LEFT JOIN,并使用IFNULL。

以下查询之类的内容会让您进入正确的轨道:

SELECT
t1.id, t1.name, t1.number, t2.number
FROM table1 t1 LEFT JOIN table2 t2 ON t1.id = t2.id
ORDER BY t1.id;

然后你可以玩IFNULL()来更好地格式化结果。