CREATE TABLE ENTITY(REF INT, PARENT_REF INT, IMAGE_REF INT); COMMIT; INSERT INTO ENTITY (REF, PARENT_REF, IMAGE_REF) VALUES (0, 0, 0); INSERT INTO ENTITY (REF, PARENT_REF, IMAGE_REF) VALUES (1, 0, 4); INSERT INTO ENTITY (REF, PARENT_REF, IMAGE_REF) VALUES (2, 1, 0); INSERT INTO ENTITY (REF, PARENT_REF, IMAGE_REF) VALUES (3, 2, 0); INSERT INTO ENTITY (REF, PARENT_REF, IMAGE_REF) VALUES (4, 3, 7); SELECT REF, PARENT_REF, CASE WHEN PARENT_REF <> 0 AND IMAGE_REF = 0 THEN PRIOR IMAGE_REF ELSE IMAGE_REF END IMAGE_REF FROM ENTITY START WITH REF=0 CONNECT BY NOCYCLE PRIOR REF=PARENT_REF /* REFS 2 AND 3 HAVE AN ACTUAL IMAGE_REF VALUE OF 0, BUT I WANT IT TO GIVE REF 2 AN IMAGE_REF OF 4 TO MATCH IT'S PARENT, AND THEN REF 3 TO HAVE AN IMAGE_REF OF 4 AS WELL TO MATCH IT'S PARENT (WHICH IS REF 2 WHICH NOW HAS AN IMAGE_REF OF 4) */