2014-03-31 73 views
0

我正在将一组数据导入OLE DB SQL SERVER。我有两列:SSIS条件拆分

ID CONDITION CLIENT 
1 A11111  G12345 
1 X11111  G23456 
2 A11111  G12345 
2 A11111  G12345 
3 A11111  G12345 
3 A11111  G23456 
4 X11111  G12345 

我必须删除重复项并上传转换表。如果condition列重复值具有相同的值,则将其取入,如果它们不同则取较小值。与client列相同。我把它带到SQL服务器中的临时表中,使用条件拆分在两个条件上使用rank==1进行排序过滤。每件事情都运行良好,但是对于有条件列的这两个记录采用了默认值,但该记录应该流过管道,因为客户等级为1。有什么建议来解决这个问题吗?

+0

不知道我是否理解这个问题,能否请您提供一个错误的和期望的输出示例? – Jayvee

+0

例如,在两列上排名后的两条记录看起来像ID条件客户端RankOnCondition RankOnClient 1 A11111 G42345 1 2 1 X11111 G23456 2 1当我通过使用等级的条件分割传递此记录时,此记录将变为默认值,因为即使它通过一个将条件拆分排在其他拆分的默认位置。任何可能的解决方案,这将记录到数据库 –

回答

0

删除重复项的最简单方法是在select语句中使用GROUP BY或DISTINCT子句。

或者,如果您正在查找最新值,则按UpdateDate排序的由ID分组的row_number()语句?降。每个id的row_number的结果将使您能够仅选择那些每个id具有1的row_number的行。 For a similar Row_Number example have a look at this

0

你的第一个条件应该有2个输出:正数,当rank == 1时,应该输出到UNION ALL变换,默认输出到第二个条件。 第二个条件也应该输出rank == 1到UNION ALL转换。

UNION ALL的输出将有任何一个或其他条件通过的行。