我有以下SQL查询计数订单,并按每个日期(日期)进行分组。SQL计数记录,按日期分组并填写缺失日期?
因此,下面的结果:
01/02/2014 = 10
02/02/2014 = 2
05/02/2014 = 7
07/02/2014 = 4
查询:
SELECT TOP(@NumberOfRecords) DATEADD(dd, 0, DATEDIFF(dd, 0, AddedDate)) AS Date, COUNT(DISTINCT ID) AS Count
FROM OrderSpecs
GROUP BY DATEADD(dd, 0, DATEDIFF(dd, 0, AddedDate))
ORDER BY Date DESC
我的问题是,怎样才能让我的查询填写任何在两者之间缺少的日期,并设置计数值为0?
例期望的结果:
01/02/2014 = 10
02/02/2014 = 2
03/02/2014 = 0
04/02/2014 = 0
05/02/2014 = 7
06/02/2014 = 0
07/02/2014 = 4
你取出时间阅读本非常感谢。
谢谢你,我真的很感激你回到我身边。一个问题是,dt列正在返回第一个日期记录的时间部分并将其应用于所有其他日期。即** 20/12/2013 14:42:56 **,那么下一个记录是** 21/12/2013 14:42:56 **。您填写空白日期的解决方案正在运行,但是,第一个项返回时,所有计数结果为空,第一个计数结果项为1.我要查找的结果应该是** Date:20/12/2013 Count :4 **,**日期:21/12/2013计数:0 **,**日期:22/12/2013计数:7 **。 – RobHurd
已根据您的意见对我的答案进行了一些修改。解决方案是假设AddedDate是日期字段,但实际上它是一个日期时间字段,我想这是意想不到的结果。让我知道编辑工作与否! –
谢谢修改Dipendu保罗。我真的很感谢你的帮助。最初你的修正案没有奏效,但是我编辑了** DECLARE mindate DATETIME **&** DECLARE maxdate DATETIME **到** DATE **,现在它看起来像预期的那样工作。我需要更彻底地检查返回的结果,但在表面上看起来工作得很好。我无法对你的帮助表示感谢。 – RobHurd