Sql 已联接表中的列计数,但包含零(无法使左联接正常工作)
我必须坐在桌子上。一个用户名为Actor,另一个命令名为Ord 每个订单可以分配给一个用户,但并非所有订单都分配了用户 我想做一个select语句,返回我的所有用户,并显示分配给每个用户的订单数量。包括未分配订单的用户 很简单,但由于某种原因我不能让它工作 到目前为止,我得到的是:Sql 已联接表中的列计数,但包含零(无法使左联接正常工作),sql,sql-server,join,select,left-join,Sql,Sql Server,Join,Select,Left Join,我必须坐在桌子上。一个用户名为Actor,另一个命令名为Ord 每个订单可以分配给一个用户,但并非所有订单都分配了用户 我想做一个select语句,返回我的所有用户,并显示分配给每个用户的订单数量。包括未分配订单的用户 很简单,但由于某种原因我不能让它工作 到目前为止,我得到的是: SELECT Usr, COUNT(Ord.OrdNo) FROM Actor LEFT JOIN Ord on Actor.EmpNo = Ord.Rsp WHERE Actor.Gr2 <>
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
表:订单
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
那么我遗漏了什么呢?将Ord条件从何处移动到ON,以获得真正的左连接结果:
如果没有where条件,我将获得期望的结果。以下是我运行的代码: 选择a.empno, countordrno 从演员a左连接到演员b 在a.empno=b.rsp上
按a.empno分组只需使用左外连接而不是左外连接JOIN@HasanGholamali,同样的事情……就是这样!谢谢您:
Usr Count
----------------
123 2
124 1
126 1
SELECT Usr, COUNT(Ord.OrdNo)
FROM Actor
LEFT JOIN Ord on Actor.EmpNo = Ord.Rsp
AND Ord.OrdTp = 6
AND Ord.OrdPrSt2 != 0x10
WHERE Actor.Gr2 <> 9
AND Actor.R1 = 10
GROUP BY Actor.Usr