我正在尝试确定数据中缺少的特定周数。我有多个具有不同日期范围的状态,并希望输出我所拥有的各种状态的所有缺失周数。甚至不确定从哪里开始使用SQL代码开始识别丢失的周数。任何有关这方面的帮助将不胜感激。顺便说一下,我正在使用SQL Server 2016。 谢谢!
示例数据:
State WeekEndingDate Sales
ID 7/5/2015 125000
ID 12/13/2015 127263
IN 8/20/2016 126589
IN 8/27/2016 124568
IN 10/15/2016 119654
MI 01/02/2017 105687
MI 02/05/2017 145962
我想要的输出的一个例子是:
MI 01/09/2017 136589
MI 01/16/2017 125641
MI 01/23/2017 145769
MI 01/30/2017 135697
IN 09/03/2016 145693 and so on....
答案 0 :(得分:1)
这就是通常所说的"gaps and islands" problem。
要解决此问题,我强烈建议您创建一个date table。然后,假设您已确定您的周结束日始终是星期六,您可以在查询中包含该日期表。
select MD.state,DT.weekendingdate,MD.sales
from DateTable DT
left outer join MyData MD on DT.Weekendingdate = MD.Weekendingdate
where dt.weekendingdate >= '2016-08-01' and dt.weekendingdate <= '2016-08-31'