CREATE TABLE TW_GROUP (Article NUMBER, Subgrp NUMBER)
Table created.
INSERT INTO TW_GROUP VALUES (1, 20)
1 row(s) inserted.
INSERT INTO TW_GROUP VALUES (2, 23)
1 row(s) inserted.
CREATE TABLE TW_GROUP_TREE (Grp NUMBER, Parent NUMBER, Code NUMBER)
Table created.
INSERT INTO TW_GROUP_TREE VALUES (20, 0, 6)
1 row(s) inserted.
INSERT INTO TW_GROUP_TREE VALUES (23, 0, NULL)
1 row(s) inserted.
INSERT INTO TW_GROUP_TREE VALUES (0, NULL, 99)
1 row(s) inserted.
SELECT Article,
(SELECT FIRST_VALUE(CODE) OVER(ORDER BY Level)
FROM TW_GROUP_TREE
WHERE Code IS NOT NULL
AND RowNum = 1
CONNECT BY PRIOR Parent = Grp
START WITH Grp = (SELECT SubGrp
FROM TW_GROUP
WHERE Article = u1.Article)) AS Code_with_Subquery,
(SELECT FIRST_VALUE(CODE) OVER(ORDER BY Level)
FROM TW_GROUP_TREE
WHERE Code IS NOT NULL
AND RowNum = 1
CONNECT BY PRIOR Parent = Grp
START WITH Grp = u1.SubGrp) AS Code_without_Subquery
FROM (SELECT 1 Article,
(SELECT SubGrp
FROM TW_GROUP
WHERE Article = 1) AS SubGrp
FROM DUAL
UNION ALL
SELECT 2 Article,
(SELECT SubGrp
FROM TW_GROUP
WHERE Article = 2) AS SubGrp
FROM DUAL) u1
ARTICLE | CODE_WITH_SUBQUERY | CODE_WITHOUT_SUBQUERY | 1 | 6 | 6 | 2 | 99 | 99 |
---|