2010-09-14 39 views
2

我正在使用ssis包修复表中的一些数据。该表看起来是这样的:ssis合并加入超过2个数据集

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中。

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

回答

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中的登台表并从那里查询。

+0

这个查询甚至可以是OLEDBSource连接 – HLGEM 2010-09-14 17:45:20

+0

是的,我可以做所有这一切在sql服务器或ole db连接。我正在尝试ssis,并想知道是否有一种方法可以将多于两个数据集合在一起,但没有多个合并连接。 – DForck42 2010-09-15 14:44:24