如何解决SQL-左联接分组依据
这是一个JOIN而非NULL问题:您的过滤器正在将OUTER更改为INNER JOIN。这意味着在CallTable(B)中有行的位置仅获得COUNT,而不是您想要的OUTER JOIN。
SELECT A.name, COUNT(B.call_id) AS 'outgoing call count'
FROM
EmployeeTable A
LEFT JOIN
(
SELECT call_from_name, call_id FROM CallTable
WHERE call_type LIKE 'outgoing'
AND voice_mail = '0'
AND /* other CallTable filters */
) B
ON A.name = B.call_from_name
WHERE
/* only EmployeeTable A filters */
GROUP BY A.name
编辑:在其他地方发表评论后,您对B的所有过滤器都必须在派生表中,而不是在外部位置。
解决方法
我有两张桌子。表A列出了员工姓名。表B是一个复杂的表,其中包含有关员工打来的电话的信息。
我的目标是制作一个包含“名称”和“
callCount”列的表。我的目标是“左加入”和“分组依据”,但是我一直想念没有打过电话的员工。我怎样才能只保留名称并在其中放置零?
也许我很亲密,有人可以指出我的错字吗?在此先感谢您的帮助,以下是SQL:
SELECT A.name,COUNT(B.call_id) AS 'outgoing call count'
FROM EmployeeTable A
LEFT JOIN CallTable B
ON A.name = B.call_from_name
WHERE B.call_type LIKE 'outgoing'
AND B.voice_mail = '0'
...
GROUP BY A.name
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。