2014-03-29 113 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