我有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:
如果我错了,请纠正我,因为数据还没有存储在任何表中,我无法使用rownumber()来使用select查询。我可以通过Merge Join来做任何事情吗?
答案 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;
}
}
}