2010-09-14 5 views
2

Je travaille sur un paquet ssis pour corriger certaines données d'une table. Le tableau ressemble à ceci:ssis merge rejoindre plus de 2 ensembles de données

CustID FieldID INT_VAL DEC_VAL VARCHAR_VAL DATE_VAL 
1  1  23 
1  2    500.0 
1  3      David 
1  4         4/1/05 
1  5  52369871 
2  1  25 
2  2    896.23 
2  3      Allan 
2  4         9/20/03 
2  5  52369872 

Je veux la transformer en ceci:

CustID FirstName AccountNumber Age JoinDate Balance 
1  David  52369871  23 4/1/05 500.0 
2  Allan  52369872  25 9/20/03 896.23 

Actuellement, j'ai obtenu mon package SSIS mis en place pour tirer dans les données de la table source, effectue une division conditionnelle sur l'ID du champ, puis génère une colonne dérivée sur chaque division. La partie sur laquelle je suis coincé rejoint les données ensemble. Je veux rejoindre les données ensemble sur le CustId.

Cependant, la fusion de jointure vous permet seulement de joindre 2 ensembles de données, à la fin je devrai joindre environ 30 ensembles de données. Existe-t-il un bon moyen de le faire sans devoir avoir un tas de jointures de fusion?

Répondre

2

Cela semble un peu gênant, pourquoi ne pas le faire dans une requête?

select 
    CustID, 
    max(case when FieldID = 3 then VARCHAR_VAL else null end) as 'FirstName', 
    max(case when FieldID = 5 then INT_VAL else null end) as 'AccountNumber', 
    max(case when FieldID = 1 then INT_VAL else null end) as 'Age', 
    max(case when FieldID = 4 then DATE_VAL else null end) as 'JoinDate', 
    max(case when FieldID = 2 then DEC_VAL else null end) as 'Balance' 
from 
    dbo.StagingTable 
group by 
    CustID 

Si votre système source est MSSQL, vous pouvez utiliser cette requête à partir SSIS ou même créer une vue dans la base de données source (si vous êtes autorisé à). Si ce n'est pas le cas, copiez les données directement dans une table de transfert dans MSSQL et interrogez-les à partir de là.

+0

Cette requête pourrait même être la connexion OLEDBSource – HLGEM

+0

ouais, je peux faire tout cela dans le serveur sql ou la connexion ole db. J'expérimente cependant avec ssis et me demandais s'il y avait un moyen de fusionner plus de 2 ensembles de données ensemble sans plusieurs jointures de fusion. – DForck42

Questions connexes