database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 40518 게시물 읽기
No. 40518
[질문] 마지막 노드의 값을 가져오고 싶습니다.
작성자
차상환
작성일
2014-07-07 16:13
조회수
7,502

아래 test data 결과처럼 나오고 싶습니다.

RPEV_APP_ID 이 NULL인걸로 시작해서 APP_ID의 마지막 노드까지 가서 마지막 노드의 값을 가져오고 싶습니다.

START WITH 를 RPEV_APP_ID IS NULL로 시작하니 ROOT의 값은 나오는데...

마지막 노의 값을 나오게 할려면 어떻게 해야하는지 궁금해서 문의 드립니다.

================================================================================================

WITH TEST_DATA AS
(
SELECT  '1'           AS TYPE_ID
       ,'TYPE1 결재'  AS TYPE_APP_NM
       ,155           AS APP_ID         --결재ID
       ,154           AS RPEV_APP_ID    --이전결재ID
       ,'반려'        AS APP_ID_NM
  FROM DUAL      
 UNION ALL
SELECT  '1'           AS TYPE_ID
       ,'TYPE1 결재'  AS TYPE_APP_NM
       ,154           AS APP_ID         --결재ID
       ,122           AS RPEV_APP_ID    --이전결재ID
       ,'반려'        AS APP_ID_NM
  FROM DUAL      
 UNION ALL
SELECT  '1'           AS TYPE_ID
       ,'TYPE1 결재'  AS TYPE_APP_NM
       ,122           AS APP_ID         --결재ID
       ,120           AS RPEV_APP_ID    --이전결재ID
       ,'반려'        AS APP_ID_NM
  FROM DUAL      
 UNION ALL
SELECT  '1'           AS TYPE_ID
       ,'TYPE1 결재'  AS TYPE_APP_NM
       ,120           AS APP_ID         --결재ID
       ,NULL          AS RPEV_APP_ID    --이전결재ID
       ,'반려'        AS APP_ID_NM
  FROM DUAL      
 UNION ALL
SELECT  '1'           AS TYPE_ID
       ,'TYPE1 결재'  AS TYPE_APP_NM
       ,100           AS APP_ID         --결재ID
       ,99            AS RPEV_APP_ID    --이전결재ID
       ,'결재'        AS APP_ID_NM
  FROM DUAL      
 UNION ALL
SELECT  '1'           AS TYPE_ID
       ,'TYPE1 결재'  AS TYPE_APP_NM
       ,99            AS APP_ID         --결재ID
       ,88            AS RPEV_APP_ID    --이전결재ID
       ,'반려'        AS APP_ID_NM
  FROM DUAL      
 UNION ALL
SELECT  '1'           AS TYPE_ID
       ,'TYPE1 결재'  AS TYPE_APP_NM
       ,88            AS APP_ID         --결재ID
       ,87            AS RPEV_APP_ID    --이전결재ID
       ,'반려'        AS APP_ID_NM
  FROM DUAL      
 UNION ALL
SELECT  '1'           AS TYPE_ID
       ,'TYPE1 결재'  AS TYPE_APP_NM
       ,87            AS APP_ID         --결재ID
       ,NULL          AS RPEV_APP_ID    --이전결재ID
       ,'반려'        AS APP_ID_NM
  FROM DUAL      
 UNION ALL
SELECT  '2'           AS TYPE_ID
       ,'TYPE2 결재'  AS TYPE_APP_NM
       ,86            AS APP_ID         --결재ID
       ,85            AS RPEV_APP_ID    --이전결재ID
       ,'반려'        AS APP_ID_NM
  FROM DUAL      
 UNION ALL
SELECT  '2'           AS TYPE_ID
       ,'TYPE2 결재'  AS TYPE_APP_NM
       ,85            AS APP_ID         --결재ID
       ,84            AS RPEV_APP_ID    --이전결재ID
       ,'반려'        AS APP_ID_NM
  FROM DUAL      
 UNION ALL
SELECT  '2'           AS TYPE_ID
       ,'TYPE2 결재'  AS TYPE_APP_NM
       ,84            AS APP_ID         --결재ID
       ,NULL          AS RPEV_APP_ID    --이전결재ID
       ,'반려'        AS APP_ID_NM
  FROM DUAL      
)
SELECT  TYPE_ID
       ,TYPE_APP_NM
       ,APP_ID
       ,RPEV_APP_ID
       ,APP_ID_NM
       --,CONNECT_BY_ISLEAF AS LEAF_NODE
  FROM TEST_DATA
 WHERE 1=1
-- START WITH RPEV_APP_ID IS NULL
-- CONNECT BY APP_ID = RPEV_APP_ID

-- 결과
--1   TYPE1 결재   155   154   반려
--1   TYPE1 결재   100    99   결재
--2   TYPE2 결재    86    85   반려

이 글에 대한 댓글이 총 1건 있습니다.

SELECT *
  FROM test_data
 WHERE CONNECT_BY_ISLEAF = 1
 START WITH rpev_app_id IS NULL
 CONNECT BY PRIOR app_id = rpev_app_id
;

마농(manon94)님이 2014-07-07 17:42에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40521쿼리 질문 [1]
guest
2014-07-10
7462
40520코드 검증관련 쿼리문의 [8]
량디
2014-07-08
7737
40519rownum과 order by를 동시에 썼을 때 성능..
corny5
2014-07-08
7206
40518[질문] 마지막 노드의 값을 가져오고 싶습니다. [1]
차상환
2014-07-07
7502
40517쿼리 문의 [1]
gome
2014-07-03
6890
40516트리 구조 쿼리 질문 [2]
RN
2014-07-01
7921
40515오라클에서 mssql db link 할때 odbc 추가하지 않고도 가능한 방법이 있나요? [1]
KMY
2014-06-30
7284
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.028초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다