如何在指定表结构场景中更新特定数据库记录?
原始数据表
| ID | NAME | START_DATE | END_DATE | CREATE_DATE |
|---|---|---|---|---|
| 100 | Apple | 01-NOV-23 | 31-DEC-99 | 01-NOV-23 |
| 100 | Anar | 10-OCT-23 | 31-DEC-99 | 12-SEP-23 |
| 100 | Anar | 04-SEP-23 | 10-OCT-23 | 04-SEP-23 |
| 101 | Ant | 01-OCT-23 | 31-DEC-99 | 01-OCT-23 |
| 101 | Bee | 10-APR-23 | 31-DEC-99 | 12-APR-23 |
| 101 | Bee | 04-MAR-23 | 10-APR-23 | 04-MAR-23 |
更新规则
- 针对每个ID中除最新记录(END_DATE为31-DEC-99)外,其余原END_DATE为31-DEC-99的记录:
- 将其
START_DATE更新为自身CREATE_DATE的值 - 将其
END_DATE更新为同ID下最新记录(END_DATE为31-DEC-99)的START_DATE
- 将其
- 核心约束:每个ID下仅允许保留一条
END_DATE为31-DEC-99的记录
更新后的数据表
| ID | NAME | START_DATE | END_DATE | CREATE_DATE |
|---|---|---|---|---|
| 100 | Apple | 01-NOV-2023 | 31-DEC-99 | 01-NOV-2023 |
| 100 | Anar | 12-SEP-2023 | 01-NOV-2023 | 12-SEP-2023 |
| 100 | Anar | 04-SEP-2023 | 10-OCT-23 | 04-SEP-2023 |
| 101 | Ant | 01-OCT-2023 | 31-DEC-99 | 01-OCT-2023 |
| 101 | Bee | 12-APR-2023 | 01-OCT-2023 | 12-APR-2023 |
| 101 | Bee | 04-MAR-2023 | 10-APR-23 | 04-MAR-23 |
内容的提问来源于stack exchange,提问作者AMBIKA SEKAR
相关产品推荐
相关产品推荐

