ssis merge加入2个以上的数据集

时间:2010-09-14 13:48:39

标签: sql-server sql-server-2008 ssis

我正在开发一个ssis包来修复表中的一些数据。该表看起来像这样:

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

我想将其转化为:

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

目前,我已将SSIS包设置为从源表中提取数据,对字段ID进行条件拆分,然后在每次拆分时生成派生列。我坚持的部分是将数据重新加入。我想将数据重新加入CustId。

但是,join merge只允许你加入2个数据集,最后我需要加入大约30个数据集。有没有一个很好的方法可以做到这一点,而不必有一堆合并连接?

1 个答案:

答案 0 :(得分:2)

这看起来有点尴尬,为什么不在查询中做呢?

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

如果您的源系统是MSSQL,那么您可以在SSIS中使用该查询,甚至可以在源数据库中创建一个视图(如果您允许)。如果没有,则将数据直接复制到MSSQL中的临时表,然后从那里查询。