SQL order by和insert to each row position number

时间:2011-05-03 17:03:46

标签: sql sql-server-2008

是否可以使用order by选择查询,并因此插入每列位置的新列?

例如我有表:

Name
-------
A
D
D
B
C
B

因此我想有桌子:

Name Position
-------------
A 1
D 4
D 4
B 2
B 2
C 3

感谢您的帮助

4 个答案:

答案 0 :(得分:2)

使用DENSE_RANK

SELECT Name ,
    DENSE_RANK() OVER (ORDER BY Name) AS 'Position'
    FROM Table

这将产生

Name Position
-------------
A   1
B   2
B   2
C   3
D   4
D   4

因此可能难以保持原始排序

答案 1 :(得分:1)

使用row_number

SELECT name,ROW_NUMBER() OVER(ORDER BY name) as Position
 FROM YourTable

答案 2 :(得分:1)

SELECT 
    Name, 
    ROW_NUMBER() OVER(ORDER BY Name) AS POSITION 
FROM Table_1

答案 3 :(得分:0)

SELECT Name, DENSE_RANK() OVER (ORDER BY Name) AS 'Position' 
FROM Table