2016-11-09 37 views
0

我需要填充名为LBSEQ的列中的一个序列号,每当名为SUBJID的列的值发生更改时,该序号重置为1。没有指定顺序 - 它不是按时间顺序排列的,它不依赖于任何其他列(尽管表中还有其他列)。所以想要的是:基于单列重置Row_Number(或类似的东西)SQL Server 2008 R2

SUBJID LBSEQ 
    001  1 
    001  2 
    001  3 
    001  4 
    002  1 
    002  2 
    002  3 
    003  1 

依此类推。似乎我应该能够使用ROW_NUMBER(),但我无法弄清楚如何让它重置为1为每个新的SUBJID。我已经搜索了这个问题,但没有一个答案似乎适用于我的情况。任何帮助赞赏。

回答

1

为此,您需要简单地使用PARTITION BY

SELECT SUBJID, 
     ROW_NUMBER() OVER(PARTITION BY SUBJID ORDER BY SUBJID) LBSEQ 
FROM dbo.YourTable; 
+0

这工作。它总是简单的东西,让我绊倒... – JeffK627

+0

@ JeffK627请考虑接受这个答案,如果这解决了你的问题。 –