微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL-左联接分组依据

如何解决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 举报,一经查实,本站将立刻删除。