Функция Row_number - PullRequest
       1

Функция Row_number

0 голосов
/ 23 марта 2011

Я пытаюсь обновить столбец с именем Rank в X table, где erank будет рангом столбца с именем 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

Но это выдает ошибку

Ответы [ 2 ]

4 голосов
/ 23 марта 2011

Как правило, когда вы задаете вопрос и упоминаете ошибку, говорите какую ошибку вы получаете. Это поможет нам помочь вам, вам не нужно делать это загадочным романом ...

Вот как вы это делаете:

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];

Конечно, сохранение такого ранга обычно обречено, так как оно станет неправильным после первого обновления, но это другая тема.

0 голосов
/ 23 марта 2011

Здесь, в то время как

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

должен выбрать только 1 столбец, вы должны реализовать некоторую другую логику для этого.при присвоении значений должен возвращаться только один столбец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...