更新sql文语句

Phoenix_99 2017-04-25 04:09:22
书名 价格 生效日 生效截止日
A 1.2 2017-04-1 2017-05-01
A 1.3 2017-05-01 2017-06-01
A 1.4 2017-06-01 null
B 1.2 2017-04-1 2017-05-01
B 1.3 2017-05-01 2017-06-01
B 1.4 2017-06-01 null

想同时把书名A,B的最后记录的生效日更新为2017-05-01,同时上一条的截止日更新为2017-05-01
如下:

A 1.2 2017-04-1 2017-05-01
A 1.3 2017-05-01 2017-05-01
A 1.4 2017-05-01 null
B 1.2 2017-04-1 2017-05-01
B 1.3 2017-05-01 2017-05-01
B 1.4 2017-05 -01 null

null每本书的最后1条记录,把每本书的最后1条的生效日和倒数第2条生效截止日,更新为2017-05-01,
请教大家如何写更新SQL,谢谢。
...全文
223 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CT_LXL 2017-04-25
  • 打赏
  • 举报
回复
引用 楼主 Phoenix_99 的回复:

UPDATE TEST2 T1
   SET T1.E_DT = '20170501'
 WHERE EXISTS (SELECT 1
          FROM (SELECT NAME, MAX(E_DT) MX_DT FROM TEST2 GROUP BY NAME) T2
         WHERE T1.NAME = T2.NAME
           AND T1.E_DT = T2.MX_DT);

UPDATE TEST2 T1
   SET T1.S_DT = '20170501'
 WHERE EXISTS (SELECT 1
          FROM (SELECT NAME, MAX(S_DT) MX_DT FROM TEST2 GROUP BY NAME) T2
         WHERE T1.NAME = T2.NAME
           AND T1.S_DT = T2.MX_DT);

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧