假设我们有下面的日期表,也假设今天是2012年1月13日:
DateKey | AvailabilityPerc
-----------------------------
2012-01-01 | 79
2012-01-02 | 80
2012-01-03 | 85
2012-01-07 | 75
2012-01-09 | 90
脚本应该做两件事:
1.填写2012年1月1日,即三天前,即2012年1月10日(当前日期减去3天)的缺失日期。
2.仅对于新的rown,使用默认数字填写AvailabilityPerc列,例如100.
结果表应如下所示:
DateKey | AvailabilityPerc
-------------------------------
2012-01-01 | 79
2012-01-02 | 80
2012-01-03 | 85
2012-01-04 | 100
2012-01-05 | 100
2012-01-06 | 100
2012-01-07 | 75
2012-01-08 | 100
2012-01-09 | 90
2012-01-10 | 100
非常感谢您的任何帮助。
答案 0 :(得分:0)
尝试这样的事情:
with temp as
(
select DateAdd(d, -5,GETDATE()) as d, 23 as val
UNION
select DateAdd(d, -3,GETDATE()), 44 as val
UNION
select DateAdd(d, -1,GETDATE()), 55 as val
), dates as
(
SELECT MyDate = CONVERT(DATETIME,'01/01/2012'), 100 as val
UNION ALL
SELECT MyDate = DATEADD(D,1,MyDate), 100 as val
from dates
WHERE MyDate < DATEADD(D,-3,GETDATE())
)
SELECT d.MyDate, COALESCE(t.val, d.val) FROM dates d
LEFT JOIN temp t
ON Convert(varchar, d.MyDate, 101) = Convert(varchar, t.d, 101)
OPTION (MAXRECURSION 365)