【发布时间】:2013-01-31 13:38:15
【问题描述】:
在 SQL Server 2008 R2 中,我有一个表 (StatDays),其中包含订单处于特定状态的天数 (DaysInStatus)。订单保持该状态的每一天都有一个条目,除了周日没有写入此表的进程。在这种情况下,订单将在星期一再次出现,DaysInStatus 提前两天。
我的问题是如何填充缺少的星期日值。 (我假设如果订单有星期六条目但没有星期一条目,则星期六是最后一个所需的数据点。)
例子:
OrderID StatDate DaysInStatus A11111 2012 年 6 月 1 日 20 A11111 2012 年 6 月 2 日 21 A11111 2012 年 6 月 4 日 23 A11111 2012 年 6 月 5 日 24 A11111 2012 年 6 月 6 日 25 A11111 2012 年 6 月 7 日 26 A11111 2012 年 6 月 8 日 27 A11111 2012 年 6 月 9 日 28 A11111 2012 年 6 月 11 日 30在这里,我想将所有这些值以及缺失的日期 6/3 和 6/10(其中 DaysInStatus 分别提前到 22 和 29)以及 OrderID 插入(或选择)到另一个表中。
此外,OrderID 不会总是在 DaysInStatus = 1 时出现在此表中。In 几乎可以出现在任何值处,并且几乎可以在任何值处退出。
我尝试生成一个日期表,然后在 statDate 和 StatDate+1、StatDate-1 上对 StatDays 进行左外连接。这适用于小型记录集,但实际表有超过 1 亿条记录,所以这对我不起作用。
提前感谢您的任何建议!
【问题讨论】:
-
假期也会缺席吗?
标签: sql-server tsql sql-server-2008-r2