2009-02-26 13 views
2

Ich frage mich, ob es eine Möglichkeit gibt, eine Abfrage zwischen Join in SSIS zu tun, ohne eine temporäre Tabelle auf meinem Server zu verwenden.Verwenden von SSIS, um eine zwischen-Abfrage

Gegeben zwei Tabellen, Konten und Gruppen. Konten enthält eine Liste von Konten mit einem oberen und unteren Bereich, um eine Liste von Kunden zu definieren. Gruppen enthalten alle Kunden.

Ich möchte in der Lage sein, die Tabellen zu verbinden, so dass ich alle Konten und die Kunden an diese Konten angeschlossen bekomme. Wenn es nur ein Account war, den ich benötigte, konnte ich einen bedingten Split verwenden, aber ich möchte alle Accounts und alle Kunden aus den Gruppen.

Die Tabellen stammen von separaten Systemen. Daher ist das Platzieren der Abfrage in einer Datenquelle keine Option.

Wenn die Tabellen auf dem gleichen System waren, konnte ich die folgende Abfrage verwenden.

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

Irgendwelche Ideen, wie man das in einem SSIS-Paket macht. Ich mag meine derzeitige Methode, beide Tabellen auf dem Server zu speichern, wirklich nicht, aber ich habe Mühe, einen Weg zu finden, dies in einer einzigen Datenflussaufgabe zu tun.

Antwort

2

Ich nehme an, jeder Kunde gehört zu einem einzigen Konto, und die Gruppenbereiche schneiden sich nicht?

Dann würde ich so etwas tun:

1) sortieren beide Tabellen nach Zugehörigkeitsgruppe (nur die LowerGroup aus Tabelle Konten verwenden)

2) Volle Merge von Gruppe beitreten. Dies wird Ihnen Tisch wie

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

3) Ein einfaches Skript, dass verwandeln wird wie folgt vorgehen:

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 

Sie

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

Michael das ist eigentlich eine wirklich gute Idee und nicht etwas, was ich überhaupt in Erwägung gezogen habe. (es ist etwas, was ich für einige meiner anderen Pakete nutzen kann). Aber in meinem Fall schneiden sich die Gruppenbereiche. Kunden können mehreren Konten angehören. Ist mein Fall ein hoffnungsloser Fall? –

+0

Sie können immer noch so etwas mit mehreren laufenden Gruppen versuchen: (1) Erstellen Sie zwei Zeilen für jede Gruppe, eine für die untere Grenze, eine für die obere. (2) vollständige Zusammenführung Join (3) das Skript wird komplexer - Verfolgen der Liste der Gruppen und Ausgabe mehrerer Zeilen (eine für jedes Element in der Liste). – Michael

Verwandte Themen