Sql 如何通过单个查询将排名分配给多个列?

Sql 如何通过单个查询将排名分配给多个列?,sql,sql-server,tsql,sql-server-2008-r2,rank,Sql,Sql Server,Tsql,Sql Server 2008 R2,Rank,假设我在表1中有int price列,我又在表1中有int priceRank列。现在可以通过单个查询按价格描述订购,并通过行号为其分配排名。因此,最大的价格将排名1,第二大的价格将排名2,然后继续。priceRank列将通过返回的行的顺序在此处更新。我该怎么做?可能吗?多谢各位 我正在使用SQLServer2008R2 ;with C as ( select priceRank, row_number() over(order by price desc) as rn

假设我在表1中有int price列,我又在表1中有int priceRank列。现在可以通过单个查询按价格描述订购,并通过行号为其分配排名。因此,最大的价格将排名1,第二大的价格将排名2,然后继续。priceRank列将通过返回的行的顺序在此处更新。我该怎么做?可能吗?多谢各位

我正在使用SQLServer2008R2

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

如果希望领带具有相同的等级,请使用;如果不希望等级值中存在任何间隙,请使用