我有一个表格,其中有一列ID
,Date
和Frequency
出现在那个特定的date
和ID
。
ID date Frequency
1 2014-05-18 5
1 2014-05-19 4
1 2014-05-20 25
2 2014-05-20 7
3 2014-05-18 4
3 2014-05-20 1
4 2014-05-18 6
我希望为每个ID
当前不存在的日期插入日期(假设日期范围从2014-05-18
到2014-05-20
)并为这些添加一个值 0 Frequency
。
例如,您可以看到
ID
1 对所有三个日期都有观察;
ID
2 缺失2014-05-18
和2014-05-19
;
ID
3 缺失2014-05-19
;
ID
4 缺失2014-05-19
和2014-05-20
.
因此,输出应如下所示
ID date Frequency
1 2014-05-18 5
1 2014-05-19 4
1 2014-05-20 25
2 2014-05-18 0
2 2014-05-19 0
2 2014-05-20 7
3 2014-05-18 4
3 2014-05-19 0
3 2014-05-20 1
4 2014-05-18 6
4 2014-05-19 0
4 2014-05-20 0
我从这个问题尝试了以下内容。但是,这只会添加Frequency
不存在于整个表中而不是在一个ID
级别上的 0 日期。
DECLARE @s DATE = '20140518', @e DATE = '20140520'; SELECT c.date, Frequency = COALESCE(a.Frequency,0) FROM dbo.Calendar AS c LEFT OUTER JOIN dbo.table AS a ON c.date = s.[date] WHERE c.d >= @s AND c.d < DATEADD(DAY, 1, @e);