将多个日期传递给 foreach 循环容器



我有一个过程,我想将多个尚未加载的日期传递到我的foreach循环容器中,以一次循环访问一个日期。 如果表中没有已加载的开始日期,我在 where 子句中有 isnull 来告诉它从该表中的最小日期开始。目前,如果表中有一个已加载的日期,它将从表中获取下一个日历日期进行处理,但不会遍历所有日期。我的目标是让它通过所有尚未加载的日期,并一次循环访问每个日期。所以我想做的是从 ods 中获取最小和最大日期。日历日期并加载这些日期之间的所有内容,包括尚未加载到 dbo 的日期。客户信息。下面是我目前的查询,请帮助我将其正确到它将从表中选择所有尚未处理的日期的位置。谢谢

DECLARE @ProcessAllDataSet BIT = ?
DECLARE @StartDate Date =?
DECLARE @EndDate date = ?
IF @LoadFullDataSet = 1
BEGIN 
SELECT @StartDate = MIN(StartDate),
@EndDate = Max(StartDate) FROM dbo.CustomerInformation 
END 
SELECT DateProcessed = MIN(DateCalendar)
FROM ods.CalendarDate c
WHERE c.CalendarDate > ISNULL(@EndDate,'2001-01-01')

我认为你已经很接近了。我假设ods.CalendarDate是一个日历日期表。如果是这样,只需修改查询以返回@StartDate和@EndDate之间的所有日期。请确保将Execute SQL TaskResultSet属性设置为Full Result Set并将结果映射到对象类型 SSIS 变量。

DECLARE @ProcessAllDataSet BIT = ?
DECLARE @StartDate Date =?
DECLARE @EndDate date = ?
IF @ProcessAllDataSet = 1
BEGIN 
SELECT 
@StartDate = MIN(StartDate),
@EndDate = Max(StartDate) 
FROM dbo.CustomerInformation 
END 
SELECT 
DateProcessed = DateCalendar
FROM ods.CalendarDate c
WHERE c.CalendarDate BETWEEN ISNULL(@StartDate,'2001-01-01') AND ISNULL(@EndDate,'2100-01-01')

然后将Foreach Loop设置为使用Foreach ADO Enumerator并使用 Object 变量作为ADO object source variable。将DateProcessed字段映射到 Date 变量,然后可以在循环访问流程时使用该 Date 变量。

最新更新