如何使用SQL代码识别丢失的周数?

时间:2017-05-15 13:04:15

标签: sql-server

我正在尝试确定数据中缺少的特定周数。我有多个具有不同日期范围的状态,并希望输出我所拥有的各种状态的所有缺失周数。甚至不确定从哪里开始使用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....

1 个答案:

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