使用 ROW_NUMBER() 对数据集进行分区
Using ROW_NUMBER() to Partition DataSets
我对在 SQL 中使用 ROW_NUMBER()
有点困惑。
有一个当前如下所示的数据集:
Number ID
1 1
2 6
3 11
我在下面写了一个查询:
SELECT rownum = ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Number), Number
FROM #SEQNUMBERSTEMP
给出输出:
rownum Number
1 1
1 2
1 3
1 4
1 5
1 6
1 1
1 2
1 3
1 4
1 1
但我想达到以下目的:
rownum Number
1 1
1 2
1 3
1 4
1 5
2 1 # Note 2 should start at position 6
2 2
2 3
2 4
2 5
3 1 # Note 3 should start at position 11
3 2
3 3
使用排名()
SELECT
rownum = rank() OVER (ORDER BY Number),
Number
FROM #SEQNUMBERSTEMP
您可能想使用不带 PARTITION BY
子句的 DENSE_RANK()
,例如:
SELECT rownum = DENSE_RANK() OVER (ORDER BY Number), Number
FROM #SEQNUMBERSTEMP
我对在 SQL 中使用 ROW_NUMBER()
有点困惑。
有一个当前如下所示的数据集:
Number ID
1 1
2 6
3 11
我在下面写了一个查询:
SELECT rownum = ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Number), Number
FROM #SEQNUMBERSTEMP
给出输出:
rownum Number
1 1
1 2
1 3
1 4
1 5
1 6
1 1
1 2
1 3
1 4
1 1
但我想达到以下目的:
rownum Number
1 1
1 2
1 3
1 4
1 5
2 1 # Note 2 should start at position 6
2 2
2 3
2 4
2 5
3 1 # Note 3 should start at position 11
3 2
3 3
使用排名()
SELECT
rownum = rank() OVER (ORDER BY Number),
Number
FROM #SEQNUMBERSTEMP
您可能想使用不带 PARTITION BY
子句的 DENSE_RANK()
,例如:
SELECT rownum = DENSE_RANK() OVER (ORDER BY Number), Number
FROM #SEQNUMBERSTEMP