피벗테이블이란?테이블을 조회한 데이터를 특정 데이터 칼럼으로 사용, 요약된 결과를 만들어 표시하는 것입니다. 사용자 입장에서 데이터를 좀 더 쉽게 볼 수 있도록 출력 형태를 가공할 때 사용합니다. 예제피벗테이블을 활용하여 세로로 되어있는 칼럼을 가로로 바꿔보는 예제 (행을 열로 변환) MM_TEST 테이블안에는 위와 같이 DT(날짜), QT(수량)의 데이터가 10만 개가 있습니다. 위 테이블의 월별 합계 수량을 가로로 나타내시오 해결방법1. 테이블의 월별 합계 수량을 Select 합니다.
2. Select한 쿼리문을 피벗테이블을 활용하여 데이터를 가공합니다. (행, 열 전환)
피벗테이블안에는 동적으로 파라미터를 받을 수 없습니다. 그러므로 피벗테이블 쿼리를 문자열로 만들어 그 문자열을 EXEC 시켜주는 방식으로 동적 피벗테이블을 구현합니다. 최종 결과
by 마농 [2021.05.17 10:05:47]
쿼리 자체 만으로는 동적 컬럼 기능은 없습니다. SELECT MIN(CASE id WHEN 'A' THEN val END) A , MIN(CASE id WHEN 'B' THEN val END) B , MIN(CASE id WHEN 'C' THEN val END) C , MIN(CASE id WHEN 'D' THEN val END) D FROM t ; select * into #Temp from(SELECT 'A' as col1, '0012' as col2, '20090301' as col3, 1 as col4 UNION ALL SELECT 'B', '0012', '20090302', 1 UNION ALL SELECT 'A', '0013', '20090303', 1 UNION ALL SELECT 'C', '0013', '20090304', 2 UNION ALL SELECT 'C', '0013', '20090305', 2 UNION ALL SELECT 'C', '0013', '20090306', 2 UNION ALL SELECT 'A', '0013', '20090307', 2 UNION ALL SELECT 'A', '0013', '20090301', 2 UNION ALL SELECT 'F', '0013', '20090302', 2 UNION ALL SELECT 'E', '0013', '20090303', 2 UNION ALL SELECT 'D', '0013', '20090304', 2 UNION ALL SELECT 'A', '0013', '20090305', 2 UNION ALL SELECT 'B', '0013', '20090306', 2 UNION ALL SELECT 'D', '0014', '20090305', 1 ) x 컬럼 col1, col2를 그룹 짓어서 날짜를 가로로 바꿔주려면.. --> 이런 쿼리가 나오는데 col3이 가변적이라면 동적쿼리를 이용해야 한다.. |