Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将多个日期传递给foreach循环容器_Sql_Sql Server_Ssis_Foreach Loop Container - Fatal编程技术网

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

Sql 将多个日期传递给foreach循环容器,sql,sql-server,ssis,foreach-loop-container,Sql,Sql Server,Ssis,Foreach Loop Container,我有一个流程,我希望传递多个尚未加载到foreach循环容器的日期,以便一次迭代一个日期。如果表中没有已加载的开始日期,我在where子句中使用isnull命令它从该表的min日期开始。当前,如果表中有已加载的日期,它将从表中抓取下一个日历日期进行处理,但不会循环遍历所有日期。我的目标是让它通过所有未加载的日期,并一次遍历一个日期。所以我想做的是从ods.CalendarDate获取最小和最大日期,并加载这些日期之间的所有内容,包括那些尚未加载到dbo.Customerinformation的日

我有一个流程,我希望传递多个尚未加载到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
字段映射到一个日期变量,然后在迭代过程时可以使用该日期变量