2009-02-26 35 views
2

arasında yapmak için SSIS kullanma Sunucumda bir geçici tablo kullanmadan SSIS'de bir sorgu birleştirmesi arasında bir yol olup olmadığını merak ediyorum. İki tablo, Hesaplar ve Gruplar verildiğindeSorgulama

. Hesaplar, bir müşteri listesini tanımlamak için bir üst ve alt aralığa sahip Hesapların bir listesini içerir. Gruplar tüm müşterileri içerir.

Tüm hesaplara ve bu hesaplara eklenmiş müşterilere ulaşabilmek için tablolara katılabilmek istiyorum. İhtiyacım olan tek bir hesap olsaydı, şartlı bir bölüm kullanabilirdim, ancak tüm hesapları ve tüm müşterileri gruplardan istiyorum.

Tablolar ayrı sistemlerden gelir, bu nedenle sorguyu bir veri kaynağına yerleştirmek bir seçenek değildir.

Tablolar aynı sistemdeyse, aşağıdaki sorguyu kullanabilirdim.

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

Bunu bir SSIS paketinde nasıl yapacağınız hakkında herhangi bir fikir. Mevcut iki tabloyu sunucuya kaydetme yönteminden gerçekten hoşlanmıyorum ama bunu tek bir veri akışı görevinde yapmanın bir yolunu bulmak için uğraşıyorum.

cevap

2

Her müşterinin tek bir hesaba ait olduğunu ve grup aralıklarının kesişmediğini varsayalım?

Sonra böyle bir şey yapacağını:

1)

2) Tam Birleştirme Grubu tarafından katıl (sadece Hesaplar tablosundan LowerGroup kullanın) Grup tarafından hem tablo sıralayın. Basit bir komut dosyası olduğunu dönüşümü

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

3) gibi bu size verecektir tablo yapacak aşağıdadır:

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 

Sen

Account Group Customer 
A1  G2 C1 
A1  G3 C2 
A2  G5 C3 
A2  G6 C4 
+0

Michael aslında gerçekten iyi bir fikir olduğunu alırsınız ve hatta bir şey bile değil. (diğer paketlerim için kullanabileceğim bir şey teşekkürler) Ancak benim durumumda grup aralıkları kesişiyor. Müşteriler birden çok hesaba ait olabilir. Benim durumum umutsuz biri mi? –

+0

Yine de birden çok çalışan grupla böyle bir şey deneyebilirsiniz: (1), her biri için bir alt sınır için, diğeri için bir tane olmak üzere iki satır oluşturun. (2) tam birleştirme birleştirin (3) komut dosyası daha karmaşık hale gelir - grupların listesini takip edin ve birden fazla satır çıktı (listedeki her öğe için bir tane). – Michael