如何将单个查询的排名分配给多个列?

时间:2011-11-28 14:14:00

标签: sql sql-server tsql sql-server-2008-r2 rank

假设我在table_1中有int price列,我再次使用int priceRank column table_1。现在可以通过单个查询按价格desc进行排序,并通过row_number为其分配排名。因此,最高价格将获得排名第一,第二大价格将获得排名2并继续。 priceRank列将通过返回的行的顺序在此更新。我怎样才能做到这一点 ?那可能吗 ?谢谢。

我正在使用SQL Server 2008 R2。

1 个答案:

答案 0 :(得分:3)

;with C as
(
  select priceRank,
         row_number() over(order by price desc) as rn
  from Table_1
)
update C
set priceRank = rn

http://data.stackexchange.com/stackoverflow/q/119397/

如果您希望关联具有相同的排名,请使用rank,如果您不希望排名值有任何差距,请使用dense_rank