【发布时间】:2017-03-17 22:03:30
【问题描述】:
我有两个数据集。一个是维度表,其数据类似于下面的示例
Table1
Key StartDate EndDate Name Data_1
1 2017-01-01 2017-01-03 Billy G 58uf
2 2017-01-10 2017-01-12 S Dogg 4940
我还有一个名为 dbo.DimDate 的标准日期维度。如何将日期维度合并到 Table1 上,以便 Table1 包含每条记录的 StartDate 和 EndDate 之间的每一天的记录?
想要的结果是这样的:
Table2
Key StartDate EndDate Name Data_1 Day
1 2017-01-01 2017-01-03 Billy G 58uf 2017-01-01
1 2017-01-01 2017-01-03 Billy G 58uf 2017-01-02
1 2017-01-01 2017-01-03 Billy G 58uf 2017-01-03
2 2017-01-10 2017-01-12 S Dogg 4940 2017-01-10
2 2017-01-10 2017-01-12 S Dogg 4940 2017-01-11
2 2017-01-10 2017-01-12 S Dogg 4940 2017-01-12
这需要在 SSIS 包中完成。我认为简单的 MERGE JOIN 不会起作用,因为 1) Date 维度没有与 Table1 中的任何内容匹配的键,以及 2) 我需要它为 StartDate 和 EndDate 之间的每个日期添加一天
如果我执行一个 SQL 命令,那么如何让它从两个单独的表中提取?
【问题讨论】:
-
你想要的结果的最后一条记录,为什么
EndDate是'2017-01-11'而不是'2017-01-12'? -
抱歉打错了
-
如果没有公共列(或键)加入,不能使用
Merge Join,我会考虑另一种方法来做到这一点 -
你能展示一下 DimDate 表的样子吗?