이전조직코드로 현재조직코드 그룹화 할 수 있나요? 0 3 372

by 딴따라 [SQL Query] [2021.10.21 10:38:11]


1.원천.png (4,692Bytes)
2.구해보자.png (9,362Bytes)

안녕하세요. 쿼리  공부하는 사람입니다.

쿼리를 짜야하는데 문제는 조직코드 ORG_CD,  이전조직코드 BF_ORG_CD 값을 가지고 그룹화 시키는것 입니다. 이것저것 해보고 안돼서 도움을 청합니다.

2.구해보자.PNG처럼 값을 구하면 되는데요. 

오라클 db입니다.

by 마농 [2021.10.21 11:10:59]

DBMS 가 뭔가요?


by 딴따라 [2021.10.21 11:21:10]

오라클 db입니다.


by jkson [2021.10.21 11:21:41]
--오라클 connect by
WITH T(ORG_CD, BF_ORG_CD, REVISION_DT, REAL_NUM) AS
(
  SELECT 1, NULL, '20210101', 10 FROM DUAL UNION ALL
  SELECT 5, 1, '20210210', 5 FROM DUAL UNION ALL
  SELECT 2, NULL, '20210205', 3 FROM DUAL UNION ALL
  SELECT 3, 5, '20210725', 8 FROM DUAL UNION ALL
  SELECT 4, 2, '20210326', 1 FROM DUAL
)
SELECT ORG_CD, BF_ORG_CD, REVISION_DT, REAL_NUM, CONNECT_BY_ROOT(ORG_CD) GRP
  FROM T
 START WITH BF_ORG_CD IS NULL
CONNECT BY PRIOR ORG_CD = BF_ORG_CD

--재귀 지원 DB, MS SQL 2017에서 테스트
WITH T1(ORG_CD, BF_ORG_CD, REVISION_DT, REAL_NUM) AS
(
  SELECT 1, NULL, '20210101', 10 UNION ALL
  SELECT 5, 1, '20210210', 5 UNION ALL
  SELECT 2, NULL, '20210205', 3 UNION ALL
  SELECT 3, 5, '20210725', 8 UNION ALL
  SELECT 4, 2, '20210326', 1  
)
, T2(ORG_CD, BF_ORG_CD, REVISION_DT, REAL_NUM, GRP, LV) AS
(
  SELECT ORG_CD, BF_ORG_CD, REVISION_DT, REAL_NUM, ORG_CD, 1
    FROM T1
   WHERE BF_ORG_CD IS NULL
  UNION ALL
  SELECT A.ORG_CD, A.BF_ORG_CD, A.REVISION_DT, A.REAL_NUM, B.GRP, B.LV+1
    FROM T1 A, T2 B
   WHERE B.ORG_CD = A.BF_ORG_CD
)
SELECT ORG_CD, BF_ORG_CD, REVISION_DT, REAL_NUM, GRP
  FROM T2
 ORDER BY GRP, LV

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입