SQL比较两列,然后动态更改其中一列的值

时间:2019-04-03 11:55:22

标签: sql

我有一个查询,我希望它在其中显示日期范围,在下一列中有一天中事件发生时间的计数。

此刻我可以显示一天中事件发生的次数,但是当我尝试显示所有日期时,它们都显示事件发生在其中。

我尝试执行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。

1 个答案:

答案 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;