안녕하세요.
유동적으로 데이터 조회하는 쿼리 문의드립니다.
데이터는 아래 표와 같고
한 UP_PK_NO를 가지고 년도별로 PK_NO가 생성되는데 UP_PK_NO를 기준으로 HM_ID가 있건 이전 SUBJECT는 다 조회할 수 있어야 합니다.
UP_PK_NO는 다른 테이블의 KEY입니다. 아래 테이블과는 부모-자식간의 관계를 갖는다 할 수 있습니다.
일단 PK_NO부터 HM_ID 까지가 테이블에 저장된 데이터이며, (색상 표시)
HM001부터 HM004 까지는 해당 ROW를 HM00X가 볼 수 있으면 O로 표시하였습니다.
PK_NO |
UP_KP_NO |
YEAR |
HM_ID |
|
HM001 |
HM002 |
HM003 |
HM004 |
SBJ0012008 |
SBJ001 |
2008 |
HM001 |
|
o |
o |
o |
|
SBJ0012009 |
SBJ001 |
2009 |
HM001 |
|
o |
o |
o |
|
SBJ0012010 |
SBJ001 |
2010 |
HM002 |
|
|
o |
o |
|
SBJ0012011 |
SBJ001 |
2011 |
HM003 |
|
|
|
o |
|
SBJ0022011 |
SBJ002 |
2011 |
HM002 |
|
|
o |
|
o |
SBJ0022012 |
SBJ002 |
2012 |
HM004 |
|
|
|
|
o |
위와 같은 경우로 데이터가 나와야 할 쿼리 RESULT는 아래와 같습니다.
PK_NO |
UP_KP_NO |
YEAR |
HM_ID |
SBJ0012008 |
SBJ001 |
2008 |
HM001 |
SBJ0012008 |
SBJ001 |
2008 |
HM002 |
SBJ0012008 |
SBJ001 |
2008 |
HM003 |
SBJ0012009 |
SBJ001 |
2009 |
HM001 |
SBJ0012009 |
SBJ001 |
2009 |
HM002 |
SBJ0012009 |
SBJ001 |
2009 |
HM003 |
SBJ0012010 |
SBJ001 |
2010 |
HM002 |
SBJ0012010 |
SBJ001 |
2010 |
HM003 |
SBJ0012011 |
SBJ001 |
2011 |
HM003 |
SBJ0022011 |
SBJ002 |
2011 |
HM002 |
SBJ0022011 |
SBJ002 |
2011 |
HM004 |
SBJ0022012 |
SBJ002 |
2012 |
HM004 |
SUBJECT별로 HM_ID의 시작년도와 종료년도가 틀려서 쿼리 만들기가 쉽지 않네요;;;
데이터가 들어있는 쿼리는 아래와 같습니다.
아래 활용해서 답변 부탁드립니다//
WITH TBL AS (
SELECT 'SBJ00012008' AS PK_NO
, 'SBJ0001' AS UP_PK_NO
, '2008' AS YEAR
, 'HM001' AS HM_ID
FROM DUAL
UNION
SELECT 'SBJ00012009'
, 'SBJ0001'
, '2009'
, 'HM001'
FROM DUAL
UNION
SELECT 'SBJ00012010'
, 'SBJ0001'
, '2010'
, 'HM002'
FROM DUAL
UNION
SELECT 'SBJ00012011'
, 'SBJ0001'
, '2011'
, 'HM003'
FROM DUAL
UNION
SELECT 'SBJ00022011'
, 'SBJ0002'
, '2011'
, 'HM002'
FROM DUAL
UNION
SELECT 'SBJ00022012'
, 'SBJ0002'
, '2012'
, 'HM005'
FROM DUAL
)
SELECT *
FROM TBL
;
|