안녕하십니까.
설문조사 통계를 내고싶은데..피벗을 이용하여 중복제거와 가로로 출력하고 싶습니다.
만약 테이블이..
년도 | 설문대상자 | 설문응답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 | 혜진 |
피벗을 썼는데 잘 안되네요 ㅠㅠㅠ
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) ) ;