ROW 가 일정하지 않은 데이타 가로출력 문의드립니다. 0 4 2,074

by 휘황찬란 [SQL Query] 오라클 쿼리 가로출력 LISTAGG MAX [2017.11.17 09:43:09]


COL COL2 COL3
1 1 입력1
1 1 입력2
1 2 입력3
1 2 입력4

현재 위와같은 테이블 데이타를..

COL1 COL2 COL1_COL2_1 COL1_COL2_2
1 1 입력값1 입력값2
1 2 입력값3 입력값4

아래와 같이 변경을 하고싶습니다. LISTAGG 를 써보면, 가로로 변경은 되나.. 한 컬럼안에 구분자로 해서 값이 다들어가서요.

COL1 COL2 의 행의 갯수가 일정하면 제가 ALIAS 로 컬럼명의 번호를 줘서 MAX로 해서 공백을 업애서 한줄로 합시던데..

ROW 갯수가 COL2 값이 다른 데이타의 ROW가 같은거지 그 같은 ROW 건수가 항상 다를수 있어서 불가능한거같습니다.

입력행만큼 가로로 변경하고 열 컬럼명을 제가 지어서 보여주고싶습니다.

TABLE1 의 COL1, COL2 그러니까.. COL1 의 값이 같은면 COL2 의 값이 다른 ROW 숫자는 무조건 같습니다..

잘은몰라도.. 될거같긴한데.. 방법을 모르겟네요.. 방법이나, 힌트 좀 부탁드립니다.

by 박군two [2017.11.17 10:20:18]
-- 이런거 말씀이신가요?
WITH T(COL1, COL2, COL3) AS (
SELECT 1, 1, '입력1' FROM DUAL UNION ALL
SELECT 1, 1, '입력2' FROM DUAL UNION ALL
SELECT 1, 2, '입력3' FROM DUAL UNION ALL
SELECT 1, 2, '입력4' FROM DUAL UNION ALL
SELECT 1, 2, '입력5' FROM DUAL
)
SELECT *
FROM   (
SELECT COL1, COL2, COL3,
       ROW_NUMBER() OVER(PARTITION BY T.COL1, T.COL2 ORDER BY T.COL3) RN
FROM   T)
PIVOT(
       MAX(COL3) FOR RN IN ( 1 "지정1", 2 "지정2", 3 "지정3")
)
COL1 COL2 지정1 지정2 지정3
1 1 입력1 입력2  
1 2 입력3 입력4 입력5

 


by 휘황찬란 [2017.11.17 11:03:38]

감사합니다. 거의 제가 원하는것도 동일합니다.

죄송합니다만.. 혹시 RN 번호를 부여한 다음에 PIVOT 부분.에서 RN 값을 비교해서 컬럼명을 주고있는 곳을..

지금은 1, 2, 3 이라 상관이없는데.. 10개일수도 100일수도 딱 정해져있지않아서.. 갯수와 상관없이 가능하게 하고싶은데

동적으로 가능할까요?


by 박군two [2017.11.17 11:15:24]

SQL로는 안되는것으로 알고 있습니다.


by 휘황찬란 [2017.11.17 11:17:08]

아. 프로시져같은걸로 해야되나 보군요. 답변 감사합니다.

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