Sql server 基于下一个记录生效日期更新期限日期列
你能在这方面帮助我吗?我有如下表格中的数据 输入: 以及所需的输出:Sql server 基于下一个记录生效日期更新期限日期列,sql-server,Sql Server,你能在这方面帮助我吗?我有如下表格中的数据 输入: 以及所需的输出: IDNO EFFECTIVE DATE TERM DATE ------------------------------------- 100 10/01/2001 03/11/2012 100 03/12/2013 05/02/2013 100 05/03/2013 10/09/2014
IDNO EFFECTIVE DATE TERM DATE
-------------------------------------
100 10/01/2001 03/11/2012
100 03/12/2013 05/02/2013
100 05/03/2013 10/09/2014
100 10/10/2014 12/31/9999
200 01/01/2017 02/28/2017
200 03/01/2017 12/31/9999
期限日期应为生效日前一天,最新记录期限日期应始终为1999年12月31日
我可能有N个相同id的记录
在MM/DD/YY中指定了日期值,您可以使用铅:
如果删除where cluase怎么办?更新运行得更快还是更慢?不管怎样,结果都是一样的…@ZoharPeled。我相信SQL Server会更新所有行,即使值不变。这会增加日志记录的额外开销。是的,但行的筛选也需要时间。我看到删除where子句后select语句运行得更快,我想知道更新是否也是这样。
IDNO EFFECTIVE DATE TERM DATE
-------------------------------------
100 10/01/2001 03/11/2012
100 03/12/2013 05/02/2013
100 05/03/2013 10/09/2014
100 10/10/2014 12/31/9999
200 01/01/2017 02/28/2017
200 03/01/2017 12/31/9999
with toupdate as (
select t.*,
lead(effective_date) over (partition by idno order by effective_date) as next_effective_date
from t
)
update toupdate
set term_date = coalesce(dateadd(day, -1, next_effective_date), '9999-12-31')
where term_date <> coalesce(dateadd(day, -1, next_effective_date), '9999-12-31');