首页
学习
活动
专区
圈层
工具
发布

TSQL脚本
EN

Stack Overflow用户
提问于 2022-09-22 19:41:49
回答 1查看 38关注 0票数 -1

请帮我写一个Transact-SQL脚本。

有一个包含条件列PK_ID (Number)、FK_ID (Number)和SEQ (Number)的表:

  • PK_ID总是独一无二的。
  • 可以将多个PK_IDs分配给一个FK_ID。
  • SEQ是PK_ID的序列号,按优先级分配给FK_ID。

我只是不能编写一个脚本,将SEQ中的条目从1更改为PK_ID上下文中最后一个条目的序列号,前提是最初所有的SEQ = 1。

现在是什么(例如):

代码语言:javascript
复制
| PK_ID|  FK_ID | SEQ |
| ---- | ------ |  -  |
| 121  | 18821  |  1  |
| 358  | 18821  |  1  |
| 611  | 18821  |  1  |
| 7251 | 23357  |  1  |
| 95   | 23357  |  1  |
| 922  | 15511  |  1  |
| 1    | 53810  |  1  |
| 777  | 53810  |  1  |
| 953  | 53810  |  1  |
| 120  | 53810  |  1  |

结果:

代码语言:javascript
复制
| PK_ID|  FK_ID | SEQ |
| ---- | ------ |  -  |
| 121  | 18821  |  1  |
| 358  | 18821  |  2  |
| 611  | 18821  |  3  |
| 7251 | 23357  |  1  |
| 95   | 23357  |  2  |
| 922  | 15511  |  1  |
| 1    | 53810  |  1  |
| 777  | 53810  |  2  |
| 953  | 53810  |  3  |
| 120  | 53810  |  4  |

请提前帮助我,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-22 19:48:15

假设您想要更新您的表。

注意:窗口功能非常值得您花时间去适应。

示例或 dbFiddle

代码语言:javascript
复制
;with cte as (
Select *
      ,NewSEQ  = row_number() over (partition by FK_ID order by PK_ID)
 From YourTable
)
Update cte set SEQ=NewSEQ
 Where SEQ<>NewSEQ

结果

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73819905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档