안녕하세요.
쿼리를 어떻게 짜야할 지 몰라 질문 드립니다.
다음과 같은 데이터가 있습니다.
이름 | 줄번호 | 순서 | ㅋ코드 | ㄱ길이 | ㄴ날짜 |
AAA | 1 | 1 | 4567 | 8900 | 20180718131314 |
AAA | 1 | 2 | 4567 | 8900 | 20180718131314 |
AAA | 1 | 3 | 4567 | 8900 | 20180718131314 |
AAA | 1 | 4 | 4567 | 8900 | 20180718131314 |
AAA | 1 | 5 | 4567 | 8900 | 20180718131314 |
AAA | 1 | 6 | 4567 | 8900 | 20180718131314 |
AAA | 2 | 1 | 4567 | 8900 | 20180718131314 |
AAA | 2 | 2 | 4567 | 8900 | 20180718131314 |
AAA | 2 | 3 | 4567 | 8900 | 20180718131314 |
AAA | 2 | 4 | 4567 | 8900 | 20180718131314 |
AAA | 2 | 5 | 4567 | 8900 | 20180718131314 |
AAA | 3 | 1 | 4567 | 8900 | 20180718131314 |
AAA | 3 | 2 | 4567 | 8900 | 20180718131314 |
AAA | 3 | 3 | 4567 | 8900 | 20180718131314 |
이런 데이터를
이름 | ㅅ순서 | ㅈ줄번호1 | ㅈ줄번호1 | ㅈ줄번호1 | ㅈ줄번호2 | ㅈ줄번호2 | ㅈ줄번호2 | ㅈ줄번호3 | ㅈ줄번호3 | ㅈ줄번호3 |
---|---|---|---|---|---|---|---|---|---|---|
이름 | ㅅ순서 | ㅋ코드 | ㄱ길이 | ㄴ날짜 | ㅋ코드 | ㄱ길이 | ㄴ날짜 | ㅋ코드 | ㄱ길이 | ㄴ날짜 |
AAA | 1 | 4567 | 8900 | 20180718131314 | 4567 | 8900 | 20180718131314 | 4567 | 8900 | 20180718131314 |
AAA | 2 | 4567 | 8900 | 20180718131314 | 4567 | 8900 | 20180718131314 | 4567 | 8900 | 20180718131314 |
AAA | 3 | 4567 | 8900 | 20180718131314 | 4567 | 8900 | 20180718131314 | 4567 | 8900 | 20180718131314 |
AAA | 4 | 4567 | 8900 | 20180718131314 | 4567 | 8900 | 20180718131314 | |||
AAA | 5 | 4567 | 8900 | 20180718131314 | 4567 | 8900 | 20180718131314 | |||
AAA | 6 | 4567 | 8900 | 20180718131314 |
이런식으로 데이터를 가져오려고 합니다.
쿼리를 어떻게 구성해야 하는지요?
표기능에서 병합이 없어 같은 이름을 반복으로 표시하였습니다.
오라클 버전은 9i 입니다.
WITH T AS ( SELECT 'AAA' NM ,1 LINE_NO ,1 SEQ ,4567 CODE ,8900 LEN ,'20180718131315' DT FROM DUAL UNION ALL SELECT 'AAA',1,2,4567,8900,'20180718131317' FROM DUAL UNION ALL SELECT 'AAA',1,3,4567,8900,'20180718131318' FROM DUAL UNION ALL SELECT 'AAA',1,4,4567,8900,'20180718131319' FROM DUAL UNION ALL SELECT 'AAA',1,5,4567,8900,'20180718131320' FROM DUAL UNION ALL SELECT 'AAA',1,6,4567,8900,'20180718131321' FROM DUAL UNION ALL SELECT 'AAA',2,1,4567,8900,'20180718131322' FROM DUAL UNION ALL SELECT 'AAA',2,2,4567,8900,'20180718131323' FROM DUAL UNION ALL SELECT 'AAA',2,3,4567,8900,'20180718131324' FROM DUAL UNION ALL SELECT 'AAA',2,4,4567,8900,'20180718131325' FROM DUAL UNION ALL SELECT 'AAA',2,5,4567,8900,'20180718131326' FROM DUAL UNION ALL SELECT 'AAA',3,1,4567,8900,'20180718131327' FROM DUAL UNION ALL SELECT 'AAA',3,2,4567,8900,'20180718131328' FROM DUAL UNION ALL SELECT 'AAA',3,3,4567,8900,'20180718131329' FROM DUAL ) SELECT NM "이름" , SEQ "순서" , MAX(CASE WHEN RN = 1 THEN CODE END ) CODE_1 , MAX(CASE WHEN RN = 1 THEN LEN END ) LEN_1 , MAX(CASE WHEN RN = 1 THEN DT END ) DT_1 , MAX(CASE WHEN RN = 2 THEN CODE END ) CODE_2 , MAX(CASE WHEN RN = 2 THEN LEN END ) LEN_2 , MAX(CASE WHEN RN = 2 THEN DT END ) DT_2 , MAX(CASE WHEN RN = 3 THEN CODE END ) CODE_3 , MAX(CASE WHEN RN = 3 THEN LEN END ) LEN_3 , MAX(CASE WHEN RN = 3 THEN DT END ) DT_3 FROM (SELECT T.NM , T.LINE_NO , T.SEQ , T.CODE , T.LEN , T.DT , ROW_NUMBER() OVER(PARTITION BY T.NM , T.SEQ ORDER BY LINE_NO ) RN FROM T ) GROUP BY NM , SEQ ORDER BY NM , SEQ