需要帮助编号行

时间:2013-10-07 22:27:41

标签: sql sql-server-2008 tsql

我正在使用t-sql,我需要以自定义方式订购结果集。请考虑以下表格和查询:

CREATE TABLE DeleteMe
(Col1 INT)

INSERT INTO DeleteMe
VALUES
(0), (2), (2), (3), (4), (4), (4)

SELECT ROW_NUMBER() OVER (ORDER BY Col1) AS OrderBy, Col1 FROM DeleteMe
ORDER BY Col1

返回:

OrderBy Col1

1 0

2 2

3 2

4 3

5 4

6 4

7 4

然而,我需要的是:

OrderBy Col1

1 0

2 2

2 2

3 3

4 4

4 4

4 4

基本上,对于相同的Col1的每个值,OrderBy值应该相同。 OrderBy属性需要从1开始并且是顺序的。因此,如果删除了Col1 = 0的记录,结果将再次从1开始:

OrderBy Col1

1 2

1 2

2 3

3 4

3 4

3 4

我一直在玩Partition By和其他一些东西,我在这一点上很难过。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

使用Dense_Rank:

SELECT dense_rank() OVER (ORDER BY Col1) AS OrderBy, Col1 FROM DeleteMe
ORDER BY Col1