sql获取两个日期之间的每周开始日期

时间:2016-01-29 18:23:50

标签: sql sql-server

我有一张包含此数据的表格 员工reported的日期和该周的start date周(星期一)。 现在他们没有在所有日期工作,例如圣诞节周没有数据。 有没有办法可以添加缺失的星期。所以,我仍然会有每周的开始日期。但报告日期可以为空。

我不能声明变量。

enter image description here

2 个答案:

答案 0 :(得分:1)

根据您的数据,最简单的方法可能是:

select distinct weekstart_date
from t
union
select distinct dateadd(day, 7, weekstart_date)
from t;

你似乎永远不会错过超过一周的时间,因此只需将每周与下一周结合起来就足够了。

答案 1 :(得分:0)

如果间隔超过1周,您可以使用递归cte执行此操作。

WITH WeeklyCTE AS 
(
    SELECT  MIN(weekstart_date) AS weekstart_date
    FROM    MyTable
    UNION ALL
    SELECT  DATEADD(week, 1, weekstart_date)
    FROM    WeeklyCTE
    WHERE   DATEADD(week, 1, weekstart_date) <= GETDATE()
)
SELECT  t.reportdate,
        w.weekstart_date
FROM    WeeklyCTE w
        LEFT JOIN MyTable t ON w.weekstart_date = t.weekstart_date
相关问题