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