2016-07-21 2 views
0

Проблема в том, что у меня есть 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.

Я знаю, что это может ввести в заблуждение (а может и нет). Дайте мне знать, если мне нужно что-то объяснить.

+1

Дополнительные данные выборки и ожидаемый результат были бы полезны – HoneyBadger

+0

Зачем вам это нужно в SSIS? Это простой CROSS JOIN в SQL. –

+0

CROSS JOIN на 3, несвязанных таблицах? Я не уверен, как бы выглядел этот SQL. – Jared

ответ

0

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