Sql 将多个日期传递给foreach循环容器
我有一个流程,我希望传递多个尚未加载到foreach循环容器的日期,以便一次迭代一个日期。如果表中没有已加载的开始日期,我在where子句中使用isnull命令它从该表的min日期开始。当前,如果表中有已加载的日期,它将从表中抓取下一个日历日期进行处理,但不会循环遍历所有日期。我的目标是让它通过所有未加载的日期,并一次遍历一个日期。所以我想做的是从ods.CalendarDate获取最小和最大日期,并加载这些日期之间的所有内容,包括那些尚未加载到dbo.Customerinformation的日期。下面是我目前的查询,请帮助我将其更正到它将从表中选择所有尚未处理的日期的位置。多谢各位Sql 将多个日期传递给foreach循环容器,sql,sql-server,ssis,foreach-loop-container,Sql,Sql Server,Ssis,Foreach Loop Container,我有一个流程,我希望传递多个尚未加载到foreach循环容器的日期,以便一次迭代一个日期。如果表中没有已加载的开始日期,我在where子句中使用isnull命令它从该表的min日期开始。当前,如果表中有已加载的日期,它将从表中抓取下一个日历日期进行处理,但不会循环遍历所有日期。我的目标是让它通过所有未加载的日期,并一次遍历一个日期。所以我想做的是从ods.CalendarDate获取最小和最大日期,并加载这些日期之间的所有内容,包括那些尚未加载到dbo.Customerinformation的日
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之间的所有日期。确保将
executesql任务的ResultSet
属性设置为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循环
以使用Foreach ADO枚举器
,并将对象变量用作ADO对象源变量
。将DateProcessed
字段映射到一个日期变量,然后在迭代过程时可以使用该日期变量