[英]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.