我在SQL Server中有两个表,如下所示,
表1:
Store Type
100 A
101 B
102 B
103 B
104 C
105 C
106 A
107 A
108 D
109 D
110 C
111 B
112 D
和表2:
Store Units
100 5
101 3
102 10
103 6
104 6
105 8
我想将查询中的两个表与两个表的Store列之间的关系链接组合在一起。我的问题是,如果我在两者之间创建一个查询,那么从106到112的商店不会出现在表中。查询如下所示,
SELECT dbo.Table1.Store,
dbo.Table1.Type,
dbo.Table2.Units
FROM Table1 INNER JOIN Table2
ON dbo.Table1.Store=dbo.Table2.Store
我该怎么做才能包含Table2(106-112)中没有出现但在Table1中的商店,并使Units = 0,这样查询表看起来如下,
Store Type Units
100 A 5
101 B 3
102 B 10
103 B 6
104 C 6
105 C 8
106 A 0
107 A 0
108 D 0
109 D 0
110 C 0
111 B 0
112 D 0
答案 0 :(得分:1)
您需要左外连接而不是内连接:
SELECT t1.Store, t1.Type, COALESCE(t1.Units, 0) as Units
FROM Table1 t1 LEFT JOIN
Table2 t2
ON t1.Store = t2.Store;
我还为您的查询引入了表别名,使其更具可读性。请注意coalesce()
的使用,因此您0
而不是Units
获得NULL
。
答案 1 :(得分:0)
SELECT dbo.Table1.Store, dbo.Table1.Type, coalesce(dbo.Table2.Units, 0) As Units
FROM Table1
LEFT JOIN Table2 ON dbo.Table1.Store=dbo.Table2.Store