我想知道是否有一种方法可以在SSIS中进行查询连接,而无需在我的服务器上使用临时表。
给出两个表,帐户和组。帐户包含具有上限和下限范围的帐户列表,以定义客户列表。小组包含所有客户。
我希望能够加入表格,以便我获得所有帐户和附加到这些帐户的客户。如果它只是我需要的一个帐户,我可以使用条件拆分但是我想要所有帐户和所有来自组的客户。
这些表来自不同的系统,因此将查询放在一个数据源中是不可取的。
如果表位于同一系统上,我可以使用以下查询。
SELECT
Accounts.Account,
Groups.Customer
FROM
Accounts,
Groups
WHERE
Accounts.AccountType = 1 AND
Groups.GroupName BETWEEN Accounts.LowerGroup AND Accounts.UpperGroup
有关如何在SSIS包中执行此操作的任何想法。我真的不喜欢我目前将两个表保存到服务器的方法,但我很难在单个数据流任务中找到一种方法。
答案 0 :(得分:2)
我假设每个客户都属于一个帐户,并且组范围不相交?
然后我会做这样的事情:
1)按组对两个表进行排序(只使用Accounts表中的LowerGroup)
2)按组完全合并加入。这将为您提供类似
的表格 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