1

使用 SSDT 16.0.61908、SSIS 15.0.2000 和 VS Community 16.3.4

在将成为其他流前身的数据流中,我有一个简单的 OLE DB 源,它针对返回 4 列的数据库中的表运行 SQL 查询:

  • 支付集团
  • 期间开始
  • 期末
  • 检查日期

当我执行包时,我希望包将运行日期与最近完成的 CHECK DATE 值进行比较,并将相应的 PAYGROUP、PERIOD START 和 PERIOD END 值设置为要在后续流程中使用的变量。

我尝试过使用派生列,但即便如此我也无法正确使用语法。此外,如果我能够推断出最近的检查日期和相关值,我也不确定如何将其传递给后续流程中调用的变量。

4

1 回答 1

1

为此,我将使用 ExecuteSql 任务。
1)将结果集设置为单行

2)使用下面查询的底部选择正确的行

3)在结果集中,将列映射到变量

DROP TABLE IF EXISTS #Payments;
create table #Payments 
    (
        PAYGROUP nvarchar(100),
        [PERIOD START] DATETIME,
        [PERIOD END] DATETIME,
        [CHECK DATE] DATETIME
    );

INSERT INTO #Payments 
VALUES('Group1', '2020-01-30', '2020-02-29', '2020-04-15')
    , ('Group2', '2020-01-30', '2020-02-29', '2020-04-16')
    , ('Group3', '2020-01-30', '2020-02-29', '2020-04-17')

-- Use this code in the SQL task, replace with real table

SELECT top (1)
    PAYGROUP,
    [PERIOD END],
    [PERIOD END]
FROM #Payments
WHERE [CHECK DATE] < Convert(date, getdate())
ORDER BY [CHECK DATE] DESC
于 2020-04-17T19:13:33.503 回答