如果您将来可以为您的示例提供 CREATE DDL 和一些 INSERT 语句,那就太棒了,但这里是一个非程序解决方案。
CREATE TABLE t (
col1 NUMBER,
col2 VARCHAR2(1),
col3 VARCHAR2(1),
col4 VARCHAR2(1),
col5 NUMBER
);
INSERT INTO t VALUES (1, 'a', NULL, 'a', NULL);
INSERT INTO t VALUES (2, 'b', NULL, 'c', NULL);
INSERT INTO t VALUES (3, 'a', 'a', NULL, NULL);
INSERT INTO t VALUES (4, 'c', NULL, 'c', NULL);
INSERT INTO t VALUES (5, 'a', 'b', NULL, NULL);
INSERT INTO t VALUES (6, 'c', NULL, 'b', NULL);
INSERT INTO t VALUES (7, 'b', 'c', 'e', NULL);
INSERT INTO t VALUES (8, 'a', NULL, 'a', NULL);
INSERT INTO t VALUES (9, 'b', NULL, 'b', NULL);
INSERT INTO t VALUES (10, 'c', NULL, 'c', NULL);
UPDATE t t1
SET t1.col5 =
(SELECT MAX(t2.col1)
FROM t t2
WHERE t2.col2 = t1.col3)
WHERE t1.col3 IS NOT NULL;
SELECT *
FROM t;
/*
col col col col col
1 a a
2 b c
3 a a 8
4 c c
5 a b 9
6 c b
7 b c e 10
8 a a
9 b b
10 c c
*/