2014-03-29 36 views
-1

如何在列改变旧序列上与新的使用SQL Server 2005SQL来更改列顺序

old new 
    1 1 
    1 1 
    3 2 
    4 3 
    5 4 
    5 4 
    5 4 
    8 5 
    8 5 
    10 6 
+1

的第一行必须是1 – sergioramosiker

+0

“的第一行必须是1 - ”。那么你应该可以编辑你的问题来纠正它。另外,我不确定你在问什么。你想“重新编号”一个INT列中的值,删除gapes并保持顺序? –

回答

0

使用window function dense_rank()没有PARTITION条款:

SELECT old, dense_rank() OVER (ORDER BY old) AS new 
FROM tbl; 
+0

我觉得OP是寻找'dense_rank',因为它会保持正确的顺序。 – sgeddes

0

您是否在寻找DENSE_RANK()

SELECT 
    T.* 
    ,DENSE_RANK() OVER (ORDER BY T.Old) As New 
FROM Table1 T 

Fiddle Demo

+0

我不认为OP希望在这种情况下使用'分区by'。 – sgeddes

1

我认为你正在寻找dense_rank

select dense_rank() over (order by old) rn, old 
from yourtable 
order by old