【发布时间】:2018-11-28 05:52:51
【问题描述】:
我必须要桌子。一个是用户(称为Actor),一个是订单(称为Ord)。
每个订单可以分配给一个用户,但并非所有订单都有用户分配。
我想创建一个选择语句来返回我的所有用户并显示每个用户分配了多少订单。包括那些没有分配订单的用户。
很简单,但由于某种原因我无法让它工作。
这是我目前得到的:
SELECT Usr, COUNT(Ord.OrdNo)
FROM Actor
LEFT JOIN Ord on Actor.EmpNo = Ord.Rsp
WHERE Actor.Gr2 <> 9
AND Actor.R1 = 10
AND Ord.OrdTp = 6
AND Ord.OrdPrSt2 != 0x10
GROUP BY Actor.Usr
这只是返回分配了订单的用户,但我希望返回所有用户,如果他们没有分配订单,则返回零。
请忽略WHERE 子句(我没有在下面的示例数据中包含列/值)。尽管如此,在我的实时数据上运行查询时,我仍然应该返回大约 10 个用户。
样本数据
表:演员
Usr EmpNo
----------------
ben 123
jane 124
jack 125
tom 126
表格:订单
OrdNo Rsp
----------------
555551 123
555552 123
555553 124
555554 126
这是我想要返回的:
Usr Count
----------------
123 2
124 1
125 0
126 1
但是我得到了这个:
Usr Count
----------------
123 2
124 1
126 1
那么我错过了什么?
【问题讨论】:
-
只需使用
LEFT OUTER JOIN而不是Left JOIN -
@HasanGholamali,同样的事情......
标签: sql sql-server join select left-join