【发布时间】:2013-10-23 22:48:24
【问题描述】:
这里有 ETL 问题。
对于包含具有开始和结束日期的条目的给定表,检索每天计数的最佳方法是什么,包括那些可能在开始结束日期范围内没有条目的日子。
给定表格示例
Stock
ID StartDate EndDate Category
1 1/1/2013 1/5/2013 Appliances
2 1/1/2013 1/10/2013 Appliances
3 1/2/2013 1/10/2013 Appliances
需要输出
Available
Category EventDate Count
Appliances 1/1/2013 2
Appliances 1/2/2013 3
...
...
Appliances 1/10/2013 2
Appliances 1/11/2013 0
...
...
我知道的一种需要 FOREVER 的方法是创建一个 Table 变量,并运行一个 While 块,遍历我希望检索的范围的开始和结束,然后执行这样的查询..
Insert into @TempTable (Category,EventDate,Count)
FROM Stock
Where @CurrentLoopDate BETWEEN StartDate AND EndDate
另一种方法是在我想要填充的范围内创建一个日期表或临时表,然后使用 BETWEEN 函数将其连接起来。
Insert into @TempTable (Category,EventDate,Count)
FROM DateTable
INNER JOIN Stock ON DateTable.[Date] BETWEEN StartDate AND EndDate
还有其他方法类似,但使用 SSIS,但本质上与上述两种解决方案相同。
有任何 GURU 知道更有效的方法吗?
【问题讨论】:
标签: sql tsql ssis etl dimension