【发布时间】:2020-08-17 14:51:34
【问题描述】:
我正在尝试使用 ROW_NUMBER () OVER(PARTITION BY... ORDER BY) 编写更新语句
这是我的表格示例:
ROW_NO ENTITY_ID ENTITY_NAME EFF_DATE INSURANCE_CO SCENARIO_ID
1 352725 ABC COMPANY 10/20/2000 999 NULL
2 352732 ABC COMPANY 7/1/2002 888 NULL
3 352736 ABC COMPANY 8/6/2004 999 NULL
4 865867 ABC COMPANY 10/16/2007 888 NULL
我使用 ROW_NUMBER() OVER(PARTITION BY ENTITY_NAME ORDER BY EFF_DATE ASC) 'ROW_NO' 来获得 ROW_NO
我想做的是设置 SCENARIO_ID = 1 其中 INSURANCE_CO = 999 的上一行。
这是我想要达到的结果:
ROW_NO ENTITY_ID ENTITY_NAME EFF_DATE INSURANCE_CO SCENARIO_ID
1 352725 ABC COMPANY 10/20/2000 999 NULL
2 352732 ABC COMPANY 7/1/2002 888 1
3 352736 ABC COMPANY 8/6/2004 999 NULL
4 865867 ABC COMPANY 10/16/2007 888 1
感谢您的帮助。
【问题讨论】:
-
那么,你有什么?为什么它没有按预期工作?
-
为什么要使用在运行时始终可以计算的值来更新表?这只是意味着每当 任何行 更改时,您都必须始终保持它为最新的所有行。除非您阅读该值的次数远远多于更新此表中的任何内容,否则这是一种浪费。
标签: sql sql-server sql-server-2017