2009-02-26 25 views
2

我想知道是否有一種方法做SSIS查詢加入而不使用我的服務器上的臨時表。使用SSIS做一個查詢

給定兩個表,帳戶和組。帳戶包含一個帳戶列表,其上限和下限用於定義客戶列表。組包含所有的客戶。

我希望能夠加入表格,以便獲取所有帳戶和附加到這些帳戶的客戶。如果它只是我需要的一個帳戶,那麼我可以使用條件分割,但是我希望所有帳戶和組中的所有客戶。

這些表來自不同的系統,因此將查詢放在一個數據源中不是一個選項。

如果這些表在同一個系統上,我可以使用下面的查詢。

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

有關如何在SSIS包中執行此操作的任何想法。我真的不喜歡我將這兩個表保存到服務器的當前方法,但我正努力找到一種方法在單個數據流任務中執行此操作。

回答

2

我假設每個客戶都屬於一個帳戶,並且組範圍不相交?

然後,我會做這樣的事情:

1)排序由集團兩個表(只使用來自帳戶表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 
+0

邁克爾,實際上是一個非常好的主意而不是我甚至認同的東西。 (這是我可以使用我的一些其他包感謝)然而在我的情況下,組範圍確實相交。客戶可以屬於多個帳戶。我的情況是無望的嗎? – 2009-02-27 22:24:05