Использование SSIS для выполнения запроса между - PullRequest
2 голосов
/ 26 февраля 2009

Мне интересно, есть ли способ сделать соединение между запросами в SSIS без использования временной таблицы на моем сервере.

С учетом двух таблиц, счетов и групп. Учетные записи содержат список учетных записей с верхним и нижним диапазоном для определения списка клиентов. Группы содержат всех клиентов.

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

Таблицы поступают из разных систем, поэтому размещение запроса в одном источнике данных невозможно.

Если бы таблицы были в одной системе, я мог бы использовать следующий запрос.

SELECT 
    Accounts.Account,
    Groups.Customer
FROM
    Accounts,
    Groups
WHERE
    Accounts.AccountType = 1 AND
    Groups.GroupName BETWEEN Accounts.LowerGroup AND Accounts.UpperGroup

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

1 Ответ

2 голосов
/ 27 февраля 2009

Я предполагаю, что каждый клиент принадлежит одной учетной записи, а диапазоны групп не пересекаются?

Тогда я бы сделал что-то вроде этого:

1) Сортировка обеих таблиц по группам (просто используйте таблицу LowerGroup из счетов)

2) Full Merge Присоединиться к группе. Это даст вам таблицу, как

 Account Group Customer
 A1      G1    NULL
 NULL    G2    C1
 NULL    G3    C2
 A2      G4    NULL
 NULL    G5    C3
 NULL    G6    C4

3) Простое преобразование сценария, которое будет выполнять следующее:

  If Customer is NULL 
    Store the Account to member variable, and skip this row
  Else
    Copy stored Account to the Account column, output the row

Вы получите

 Account Group Customer
 A1      G2    C1
 A1      G3    C2
 A2      G5    C3
 A2      G6    C4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...