Mic*_*per 16 sql sql-server row-number ranking ranking-functions
我正在尝试向现有表添加新列,其中值是行号/等级.我需要一种方法来生成行号/等级值,我还需要限制受影响的行 - 在这种情况下,字符串中存在子字符串.
现在我有:
UPDATE table
SET row_id=ROW_NUMBER() OVER (ORDER BY col1 desc) FROM table
WHERE CHARINDEX('2009',col2) > 0
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
Windowed functions can only appear in the SELECT or ORDER BY clauses.
Run Code Online (Sandbox Code Playgroud)
(同样的错误RANK())
有没有办法用ROW_NUMBER()函数创建/更新列?仅供参考,这意味着要替换不正确的,已存在的"排名"列.
Ian*_*ton 26
您可以使用CTE执行此操作,例如:
with cte as
(
select *
, new_row_id=ROW_NUMBER() OVER (ORDER BY col1 desc)
from MyTable
where charindex('2009',col2) > 0
)
update cte
set row_id = new_row_id
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38059 次 |
| 最近记录: |