簡體   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