오라클 피벗 질문드립니다. 0 3 1,065

by 이순신 [Oracle 기초] [2018.12.20 13:26:19]


안녕하십니까.

설문조사 통계를 내고싶은데..피벗을 이용하여 중복제거와 가로로 출력하고 싶습니다.

만약 테이블이..

년도 설문대상자 설문응답1 설문응답2 설문응답3 설문자
2019 홍길동 1 2 2 다현
2019 홍길동 2 2 1 쯔위
2019 홍길동 1 1 3 지효
2019 홍길동 3 3 3 채영
2019 김구 1 1 1 정혜
2019 김구 2 1 1 혜진

이런식으로 출력되는데...

피벗을 이용하여

설문대상자 중복을 없애고 가로로 출력하고싶습니다.

년도 설문대상자 설문응답1 설문응답2 설문응답3 설문자 설문응답1 설문응답2 설문응답3 설문자
2019 홍길동 1 2 2 다현 2 2 1 쯔위
2019 김구 1 1 1 정혜 2 1 1 혜진

피벗을 썼는데 잘 안되네요 ㅠㅠㅠ

by 마농 [2018.12.20 14:06:24]
WITH t AS
(
SELECT '2019' 년도, '홍길동' 설문대상자, '1' 설문응답1, '2' 설문응답2, '2' 설문응답3, '다현' 설문자 FROM dual
UNION ALL SELECT '2019', '홍길동', '2', '2', '1', '쯔위' FROM dual
UNION ALL SELECT '2019', '홍길동', '1', '1', '3', '지효' FROM dual
UNION ALL SELECT '2019', '홍길동', '3', '3', '3', '채영' FROM dual
UNION ALL SELECT '2019', '김구'  , '1', '1', '1', '정혜' FROM dual
UNION ALL SELECT '2019', '김구'  , '2', '1', '1', '혜진' FROM dual
)
SELECT *
  FROM (SELECT 년도, 설문대상자, 설문응답1, 설문응답2, 설문응답3, 설문자
             , ROW_NUMBER() OVER(PARTITION BY 년도, 설문대상자 ORDER BY 설문자) rn
          FROM t
        )
 PIVOT ( MIN(설문응답1) 설문응답1
       , MIN(설문응답2) 설문응답2
       , MIN(설문응답3) 설문응답3
       , MIN(설문자   ) 설문자
         FOR rn IN (1, 2, 3, 4) )
;

 


by 이순신 [2018.12.20 16:53:46]

감사합니다

하나만 질문해도 될까요..

만약 홍길동에 대한 설문자가 늘어날경우

FOR rn IN (1, 2, 3, 4)   <-- 계속 늘려야하는지...

 


by 마농 [2018.12.20 16:59:26]

네. 늘려 주셔야 합니다.
- 인원수 변경될 때마다 수동으로 늘려 주던가.
- 최대 가능 인원을 예상해서 고정으로 미리 늘려 놓던가.

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