加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

如何在SQL Server 2012中添加行号列

发布时间:2020-12-12 16:15:47 所属栏目:MsSql教程 来源:网络整理
导读:我正在尝试向现有表添加一个新列,其中值是行号/排名.我需要一种方法来生成行号/秩值,我还需要限制受影响的行 – 在这种情况下,字符串中存在子字符串. 现在我有: UPDATE tableSET row_id=ROW_NUMBER() OVER (ORDER BY col1 desc) FROM tableWHERE CHARINDEX('
我正在尝试向现有表添加一个新列,其中值是行号/排名.我需要一种方法来生成行号/秩值,我还需要限制受影响的行 – 在这种情况下,字符串中存在子字符串.

现在我有:

UPDATE table
SET row_id=ROW_NUMBER() OVER (ORDER BY col1 desc) FROM table
WHERE CHARINDEX('2009',col2) > 0

我得到这个错误:

Windowed functions can only appear in the SELECT or ORDER BY clauses.

(RANK()的相同错误)

有没有办法用ROW_NUMBER()函数创建/更新列? FYI,这意味着取代不正确的已经存在的“等级”列.

解决方法

你可以用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

SQL Fiddle with demo.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读