2011-12-08 87 views
2

設置上排名列..order增加值試想一個表[ID,名稱,位置,價錢]TSQL - 通過價格

目前該表有所有具有排名紀錄= 0最簡單的方法並且每個記錄具有不同的價格值

什麼是最快的方式更新該位置並設置其價值獨特,並基於價格,其中最低價格的記錄是位置= 1,第二最低位置= 2 ...所以上?

感謝先進。

回答

4

您可以使用row_number來編號的行。子查詢需要通過別名來引用行號:

update yt 
set Position = rn 
from (
     select row_number() over (order by Price desc) as rn 
     ,  * 
     from YourTable 
     ) yt 

Working example at SE Data.

+1

什麼應用,從而優雅地一見一見這樣一個先進的SQL :-) –