繁体   English   中英

带有计数的SQL LEFT OUTER JOIN

[英]SQL LEFT OUTER JOIN with Count

我在这里有此查询:

SELECT a.timeSlot, a.dateSlot, COUNT(concat(b.dateSlot, ' - ', b.timeSlot)) AS counter 
FROM CP_VIP_Preview_TimeSlots as a 
   LEFT OUTER JOIN [CP-VIP-Preview] as b 
                ON a.timeSlot = b.dateSlot 
               AND a.dateSlot = b.timeSlot 
GROUP BY a.timeSlot, a.dateSlot, a.[order] 
ORDER BY a.[order]

我想做的是获取每个查询的计数,但是查询有些混乱,任何具有0的行都显示为1,而实际上具有项目的任何行都显示正确的数字,如果该行存在问题count是0,它显示1.。为什么这样做?

您的COUNT(concat(b.dateSlot, ' - ', b.timeSlot))将始终返回至少一个

也许你可以尝试

sum(IIF(b.dateSlot is null,0,1))

您需要使用HAVING在使用分组依据之后应用过滤器,这样就不会将记录计数为零

SELECT a.timeSlot, a.dateSlot, COUNT(concat(b.dateSlot, ' - ', b.timeSlot)) AS counter 
FROM CP_VIP_Preview_TimeSlots as a 
   LEFT OUTER JOIN [CP-VIP-Preview] as b 
                ON a.timeSlot = b.dateSlot 
               AND a.dateSlot = b.timeSlot 
GROUP BY a.timeSlot, a.dateSlot, a.[order] 
ORDER BY a.[order]

HAVING COUNT(concat(b.dateSlot,'-',b.timeSlot))> 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM