SSIS数据流中的Rank / Rownumber函数

时间:2014-07-24 19:47:08

标签: sql ssis rownum

在我的数据流中,经过一些查询,我会得到重复的客户记录(它们不是完全重复的,只有客户ID是相同的),基于客户的一些属性,如城市,位置。我需要在其中选择一条记录。

如何在SSIS数据流中实现此目的

以下是示例数据:

;with cust (CustomerID,Cutomer_Name,score)
as 
(Select 1 as CustomerID, 'abd' as Cutomer_Name, 100 as Score
union 
select 1,'abd',null
union select 1,'abd',20
)  

select * from cust   

从这里开始,我需要选择得分最低的记录,并将该行只发送到决赛桌。

在SQL中使用Rownum函数很容易实现,但这种情况发生在SSIS中的数据流期间

3 个答案:

答案 0 :(得分:2)

在SQL命令上执行源的数据访问模式。

enter image description here

答案 1 :(得分:1)

使用MultiCast将其拆分为两个输出 - 例如Output1和Output2。其中一个输出连接到Aggregate转换和Group by CustomerId并执行最低分数。现在将聚合转换的输出连接回Output2,在映射图中使用合并连接Output2.CustomerId = Aggregate Transform.Score和Output2.CustomerId = Aggregate Transform.Score。这样做可以解决问题,但是如果您有多个具有相同分数的customerId,那么在此步骤之后您可能需要排序以删除重复项。希望这可以帮助。

答案 2 :(得分:0)