繁体   English   中英

Row_number函数

[英]Row_number function

我正在尝试更新X table中名为Rank的列,其中rank将是称为annual sales的列的排名,它是通过row_number () over (order by annual sales desc)来计算的,因为这是一个函数,因此它不能用于更新,因为它应该只是select子句的一部分,因此我们编写了以下内容:

UPDATE X 
   SET rank = SELECT acc_id,
                     annual_call,
                     ROW_NUMBER() OVER (ORDER BY annual sales DESC)
                FROM x 
            GROUP BY acc_id,annual_call

但这引发了错误

作为一般规则,当你问一个问题,你提到一个错误,说你得到了什么错误。 它可以帮助我们为您提供帮助,而您不必把它做成一部神秘小说。

这是您的操作方式:

with cte as (
select [rank], row_number() over (
   partition by acc_id, annual_call
   order by [annual sales] desc) as [row_number]
from x)
update cte
set [rank] = [row_number];

当然,坚持这样的排名通常是注定的,因为它在第一次更新后将变得不正确,但这是一个不同的话题。

在这里

set rank = select acc_id,annual_call,row_number () 
over (order by annual sales desc)
from x

必须仅选择1列,则必须为此实现一些其他逻辑。 因为分配值必须仅返回单个列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM