SQL Server 获取所有行,即使不存在- SQL

p4tfgftt  于 2022-11-21  发布在  其他
关注(0)|答案(1)|浏览(145)

我有两张table:

T1:(每家商店的销售额)

`Store  Sales  DateT
A01    100    01-01-22
B01    200    01-01-22
C01    300    01-01-22`

T2:(储存)

`CodeStore  Name
A01        Name1
B01        Name2
C01        Name3
D01        Name4`

我想获取两个表的所有行,即使商店中没有销售。例如:在表T1中,商店D 01在此日期(01-01-22)没有销售:但我想得到这张唱片

预期结果:

`Store  Sales
A01    100
B01    200
C01    300
D01    `

我试过这段代码,但是商店D 01没有出现:

`SELECT CodeStore, sum(Sales)
FROM T1
LEFT OUTER JOIN T2 ON CodeStore = Store
where DateT = '01-01-22'
group by CodeStore`
jyztefdp

jyztefdp1#

您必须在查询中切换两个数据表,以便包含T2的所有记录。此外,DateT筛选器现在应该在链接准则中(在ON子句中),因为它会筛选T1

SELECT CodeStore, sum(Sales)
FROM T2
LEFT OUTER JOIN T1 ON CodeStore = Store AND DateT = '01-01-22'
group by CodeStore

使用左连接(LEFT OUTER JOIN)可确保即使在连接表(T1)中没有匹配行,select(T2)中的表中的所有行都将包括在结果中。

相关问题