【发布时间】:2021-12-12 11:00:49
【问题描述】:
我需要将表格更新为:
ID | START_DATE | response| FINAL_TREND
1 14-10-2021 4
1 15-10-2021 3
1 16-10-2021 2
1 17-10-2021 2
1 18-10-2021 3
1 19-10-2021 2
输出为:
ID | START_DATE | response| FINAL_TREND
1 14-10-2021 4 NULL
1 15-10-2021 3 4
1 16-10-2021 2 3
1 17-10-2021 2 2
1 18-10-2021 3 2
1 19-10-2021 2 3
所以,在运行代码时:
SELECT LAG(RESPONSE,1) OVER (ORDER BY START_DATE) AS NEW
FROM DUMMY_YC
输出为:
NULL
4
3
2
3
2
2
但是当在更新 AS 中使用相同的代码时:
UPDATE DUMMY_YC A SET A.RESPONSE = (SELECT LAG(B.RESPONSE,1) OVER (ORDER BY B.START_DATE) AS NEW
FROM DUMMY_YC B WHERE B.START_DATE=A.START_DATE)
输出为:
7 rows updated.
但实际更新的值是
RESPONSE|
(null)
(null)
(null)
(null)
(null)
(null)
(null)
我们将不胜感激。使用 Oracle SQL Developer。
【问题讨论】: