根据ROW_NUMBER的分区应用相同的行ID

时间:2018-12-10 13:41:36

标签: tsql numbers row

我正在尝试根据DOC值顺序添加行数-我唯一的条件是,如果文档相同(如最后三行),则应该获得相同的行号。

SELECT [DOC], ROW_NUMBER()  OVER(PARTITION BY [DOC] ORDER BY [DOC])
FROM [rowset_TST]

在我得出相反的结论之后-相同的最后三个文档被编号,其余的不被编号:不是唯一的ZZB应该得到相同的行号。

ABC 1 DBS   1 DDS   1 SBC   1
SSC 1 ZZB   1 ZZB   2 ZZB   3

高度赞赏的任何建议-请告诉我是否可以使用ROW_NUMBER()

关于卢克

1 个答案:

答案 0 :(得分:0)

我认为您打算在此处使用等级函数,可能是DENSE_RANK

SELECT [DOC], DENSE_RANK() OVER (ORDER BY [DOC])
FROM [rowset_TST]
ORDER BY [DOC];

假设您的示例数据相同,这将生成以下输出:

enter image description here

这是对您的问题/要求的唯一解释,这种解释是很有意义的。如果您确实希望每个文档(无论是否出现一次或多次)的“行号”值为1,那么我看不出使用ROW_NUMBER的意义。