我有一个查询,我希望它在其中显示日期范围,在下一列中有一天中事件发生时间的计数。
此刻我可以显示一天中事件发生的次数,但是当我尝试显示所有日期时,它们都显示事件发生在其中。
我尝试执行Case和If语句,但似乎语法错误
select distinct d.DateNumber, count(*) as AmountofEvents
from dbo.dateTable d
join dbo.TimeTaken m
on d.dateNumber = m.dateEventHappens or d.dateNumber != m.dateEventHappens
group by d.dateNumber, m.dateEventHappens
Order by d.dateValue ASC
DateNumber是日期列表,AmountofEvents是当天的事件计数,dateEventHappens是发生事件的日期。
我需要一种比较dateNumber不等于dateEventHappens的方法,然后将当天的AmountofEvents计数显示为0。
答案 0 :(得分:0)
您需要修复GROUP BY
,删除SELECT DISTINCT
,然后引入LEFT JOIN
:
select d.DateNumber, count(m.dateEventHappens) as AmountofEvents
from dbo.dateTable d left join
dbo.TimeTaken m
on d.dateNumber = m.dateEventHappens
group by d.dateNumber
order by d.dateValue ASC;