在重复记录中添加增量编号

时间:2018-04-24 05:36:02

标签: sql-server tsql ssis

我有SSIS包,它检索包括重复的所有记录。我的问题是如何为重复记录添加增量值(只有ID和PropertyID)。

例如

来自合并加入的记录

ID   Name   PropertyID  Value
1    A      1           123
1    A      1           223
2    B      2           334
3    C      1           22
3    C      1           45

现在我需要在每条记录的末尾附加一个增量值

ID   Name   PropertyID  Value  RID
1    A      1           123    1
1    A      1           223    2
2    B      2           334    1
3    C      1           22     1
3    C      1           45     2

自ID 1& 3返回两次,第一条记录的RID为1,第二条记录为2。

需要考虑ID和PropertyID来生成重复ID,即RID。

如何在SSIS中或使用SQL命令执行此操作?

更新#1:

enter image description here

如果我错了,请纠正我,因为数据还没有存储在任何表中,我无法使用rownumber()来使用select查询。我可以通过Merge Join来做任何事情吗?

2 个答案:

答案 0 :(得分:2)

您可以使用ROW_NUMBER

SELECT ID, 
       Name, 
       PropertyID, 
       Value, 
       ROW_NUMBER() OVER(PARTITION BY ID, PropertyID ORDER BY Value) As RID
FROM TableName

答案 1 :(得分:1)

这将为您完成工作:https://paultebraak.wordpress.com/2013/02/25/rank-partitioning-in-etl-using-ssis/

您需要编写一个自定义脚本,如下所示:

public
class
ScriptMain : UserComponent

{
 string _sub_category = “”;
int _row_rank = 1;

public  override  void Input0_ProcessInputRow(Input0Buffer Row)
{
if (Row.subcategory != _sub_category)
{
_row_rank = 1;
Row.rowrank = _row_rank;

_sub_category = Row.subcategory;
}
else
{
   _row_rank++;
   Row.rowrank = _row_rank;

}

}
}