请帮我写一个Transact-SQL脚本。
有一个包含条件列PK_ID (Number)、FK_ID (Number)和SEQ (Number)的表:
我只是不能编写一个脚本,将SEQ中的条目从1更改为PK_ID上下文中最后一个条目的序列号,前提是最初所有的SEQ = 1。
现在是什么(例如):
| 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 |结果:
| 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 |请提前帮助我,谢谢。
发布于 2022-09-22 19:48:15
假设您想要更新您的表。
注意:窗口功能非常值得您花时间去适应。
示例或 dbFiddle
;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结果

https://stackoverflow.com/questions/73819905
复制相似问题