基于单个列 SQL Server 2008 R2 重置 Row_Number(或类似的东西)
Reset Row_Number (Or Something Like It) Based On a Single Column SQL Server 2008 R2
我需要使用序号填充 table 中名为 LBSEQ 的列,每次名为 SUBJID 的列的值更改时,该序号都会重置为 1。未指定顺序 - 它不是按时间顺序排列的,也不依赖于任何其他列(尽管 table 中还有其他列)。所以想要的是:
SUBJID LBSEQ
001 1
001 2
001 3
001 4
002 1
002 2
002 3
003 1
等等。似乎我应该能够使用 ROW_NUMBER() 但我不知道如何让它为每个新的 SUBJID 重置为 1。我搜索了这个问题,但 none 的答案似乎适用于我的情况。任何帮助表示赞赏。
为此,您只需使用 PARTITION BY
:
SELECT SUBJID,
ROW_NUMBER() OVER(PARTITION BY SUBJID ORDER BY SUBJID) LBSEQ
FROM dbo.YourTable;
我需要使用序号填充 table 中名为 LBSEQ 的列,每次名为 SUBJID 的列的值更改时,该序号都会重置为 1。未指定顺序 - 它不是按时间顺序排列的,也不依赖于任何其他列(尽管 table 中还有其他列)。所以想要的是:
SUBJID LBSEQ
001 1
001 2
001 3
001 4
002 1
002 2
002 3
003 1
等等。似乎我应该能够使用 ROW_NUMBER() 但我不知道如何让它为每个新的 SUBJID 重置为 1。我搜索了这个问题,但 none 的答案似乎适用于我的情况。任何帮助表示赞赏。
为此,您只需使用 PARTITION BY
:
SELECT SUBJID,
ROW_NUMBER() OVER(PARTITION BY SUBJID ORDER BY SUBJID) LBSEQ
FROM dbo.YourTable;