使用SSIS进行查询之间

时间:2009-02-26 12:53:56

标签: sql ssis

我想知道是否有一种方法可以在SSIS中进行查询连接,而无需在我的服务器上使用临时表。

给出两个表,帐户和组。帐户包含具有上限和下限范围的帐户列表,以定义客户列表。小组包含所有客户。

我希望能够加入表格,以便我获得所有帐户和附加到这些帐户的客户。如果它只是我需要的一个帐户,我可以使用条件拆分但是我想要所有帐户和所有来自组的客户。

这些表来自不同的系统,因此将查询放在一个数据源中是不可取的。

如果表位于同一系统上,我可以使用以下查询。

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

有关如何在SSIS包中执行此操作的任何想法。我真的不喜欢我目前将两个表保存到服务器的方法,但我很难在单个数据流任务中找到一种方法。

1 个答案:

答案 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