Проблема в том, что у меня есть 3 таблицы. Первая таблица - это, в основном, список номеров учетных записей. Вторая таблица содержит список отделов внутри компании, а последний содержит список перечисленных мест размещения (заводов). Источниками данных в SSIS являются setup (OLEDB), каждый из которых вытягивает каждую запись в столбце из своих соответствующих таблиц (завод, отдел и acctnum, все из которых являются типами varchar). Я создал переменные (типы объектов) в SSIS и присвоил им множество результатов для каждого из трех табличных притяжений. Также были установлены и назначены переменные строк.SSIS - ForEach Loop поверх нескольких таблиц
Моя цель такова: для каждого номера учетной записи мне нужно создать уникальный «код», состоящий из «plant» + «dept» + «acctnum» и вставить этот конкатенированный результат в отдельную таблицу. Каждый номер счета должен сочетаться таким образом с каждым заводом, а также с каждым отделом.
Таким образом, образец вставленной записи может выглядеть так: «081350015» (первые 2 цифры - это растение, следующие 2 - это отдел, остальные 5 - acctnum). В следующей вставленной записи будет использоваться один и тот же номер счета в сочетании с результатом следующей записи деблокирования, выбранной из таблицы делений, и следующей записи завода, выбранной из таблицы заводов. В принципе, каждый номер счета получает каждую комбинацию отдела/завода.
Пример:
- первая запись в AcctNumber таблице: '50001' (примерно 300 общее число строк в AcctNumber TBL)
- первая запись в таблице растений: '01' (15 строк в таблице Plant)
- первая запись в таблице Dept: '22' (50 строк в таблице Dept)
- Теперь код сборки для вставки в отдельный стол -> '01' + '22' + '50001' -> insert '01225001'
- По-прежнему используется первая запись из таблицы AcctNumber: '500 01'
- Тем не менее, используя первую запись из таблицы Депта: „22“
- Теперь, переходит к второй записи в таблице растений: „41“
- код сборки для вставки в отдельную таблицу -> „41“ + '22 «+„50001“-> вставить
- Тем не менее, используя первую запись из AcctNumber таблицы:„50001“
- Тем не менее, используя первую запись из Депт таблицы:„22“
- Теперь, переходим к третьей записи в таблице растений:» 18 '
- Код сборки для вставки в отдельный стол ->' 18 '+' 22 '+ 50001' -> insert
Этот поток следует до тех пор, пока комбинация AcctNum/Dept ('22' + '50001') не будет объединена с каждой заводской записью, возвращенной из таблицы Plant.
Теперь, используя первую запись, возвращенную из таблицы AcctNum ('50001'), мы используем запись NEXT, возвращаемую из таблицы Dept ('62'), и повторяем ее до первой записи, возвращенной из таблицы Plant ('01'), что приводит к вставке '01' + '62' + '50001' в отдельную таблицу. Таким образом, для каждой записи Dept, она будет объединена с каждой заводской записью, возвращенной с учетом уникального AcctNumber.
Я знаю, что это может ввести в заблуждение (а может и нет). Дайте мне знать, если мне нужно что-то объяснить.
Дополнительные данные выборки и ожидаемый результат были бы полезны – HoneyBadger
Зачем вам это нужно в SSIS? Это простой CROSS JOIN в SQL. –
CROSS JOIN на 3, несвязанных таблицах? Я не уверен, как бы выглядел этот SQL. – Jared