안녕하세요. 날씨가 많이 덥습니다. 하시는 일들 모두 잘되시길 빌며, 질문 하나 올립니다 흑...
상위시스템(SAP측)에서 저희 시스템 쪽으로 데이터를 내려주는데요.
다음과 같은 방식으로 내려옵니다.
순번(SEQ) | 명칭(NAME) | 그룹(GRP) |
1 | 거인 | A |
2 | 홍길동 | B |
3 | 홍길은 | B |
4 | 인간 | A |
5 | 김일등 | B |
6 | 김이등 | B |
7 | 김삼등 | B |
8 | 동물 | A |
9 | 소순이 | B |
저 순번에 맞추어서 데이터가 내려오는데, 사실 그룹 B들은 위 순번에 있는 그룹A에 속한 녀석들입니다. 하여 데이터는 사실
순번 | 그룹 A 명칭 AS 그룹 | 명칭 |
2 | 거인 | 홍길동 |
3 | 거인 | 홍길은 |
5 | 인간 | 김일등 |
6 | 인간 | 김이등 |
7 | 인간 | 김삼등 |
9 | 동물 | 소순이 |
위처럼 나와야 하는데요, 처음에 있는 표의 데이터를 어떻게 조회하면 두 번째있는 표처럼 만들 수 있을까요?
프로시저를 만들어서 커서를 통해 내보내야만 할까요?
--여기서 순번은 어떻게 나오든 상관 없습니다..
WITH T(SEQ, NAME, GRP) AS( SELECT 1, '거인', 'A' FROM dual UNION ALL SELECT 2, '홍길동', 'B' FROM dual UNION ALL SELECT 3, '홍길은', 'B' FROM dual UNION ALL SELECT 4, '인간', 'A' FROM dual UNION ALL SELECT 5, '김일등', 'B' FROM dual UNION ALL SELECT 6, '김이등', 'B' FROM dual UNION ALL SELECT 7, '김삼등', 'B' FROM dual UNION ALL SELECT 8, '동물', 'A' FROM dual UNION ALL SELECT 9, '소순이', 'B' FROM dual ) SELECT SEQ, GRP2, NAME FROM ( SELECT SEQ, NAME, GRP, LAST_VALUE(GRP2 ignore nulls) OVER(ORDER BY SEQ) GRP2 FROM ( SELECT SEQ, NAME, GRP, CASE WHEN GRP = 'A' THEN NAME ELSE '' END GRP2 FROM T ) ) WHERE GRP = 'B' ORDER BY SEQ