Как сравнить текущую дату с таблицей, содержащей столбцы с сериями дат, и использовать связанные значения в качестве переменных? - PullRequest
1 голос
/ 17 апреля 2020

Использование SSDT 16.0.61908, SSIS 15.0.2000 и сообщества VS 16.3.4

Внутри потока данных, который будет предшественником других потоков, у меня есть простой источник OLE DB, который запускает SQL запрос к таблице в БД, которая возвращает 4 столбца:

  • PAYGROUP
  • ЗАПУСК ПЕРИОДА
  • КОНЕЦ ПЕРИОДА
  • ПРОВЕРКА ДАТЫ

Когда я выполняю пакет, я хочу, чтобы пакет сравнил дату выполнения с последним завершенным значением CHECK DATE и установил соответствующие значения PAYGROUP, PERIOD START и PERIOD END в качестве переменных для использования в последующих потоках.

Я пытался использовать производные столбцы, но даже тогда я не мог получить правильный синтаксис. Кроме того, если я могу вывести самую последнюю дату проверки и коррелированные значения, я также не уверен, как передать ее в переменную, которая вызывается в последующих потоках.

1 Ответ

1 голос
/ 17 апреля 2020

Для этого я бы использовал задачу Выполнить Sql.
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...