[英]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.