데이터 한줄로 합치고 행을 열로 바꾸기 0 1 3,733

by 구사일생 [SQL Query] 대량테이블 N개의 컬럼 행을열로변환 열합치기 [2023.12.05 22:03:13]


질문이 있어 오랜만에 글을 적습니다.

컬럼이 300개가 넘고 5천만건이 넘는 BIG 테이블을 다른 DB로 옮기는 중 입니다.(전임자가 갑자기 그만둬서 맡게 된 업무)

데이터가 잘 옮겨 졌는지 검증을 해야 하는데 컬럼이 너무 많아서 두 테이블을 GROUP BY SUM 한 후 MINUS해서 엑셀로 비교 하려해도 좀 어렵네요.

그래서 전임자가 검증용 중간 TMP 테이블(컬럼100개)을 만들어서 원래 테이블의 특정컬럼(코드)별로 GROUP BY SUM 한 결과를 TMP 테이블이 넣어 놓았습니다.

원 테이블    1건 SELECT 대출상품코드,SUM(1개월),SUM(2개월),SUM(3개월),SUM(4개월),....

SUM(60개월)....,COUNT(DISTINCT(CODE1)),,COUNT(DISTINCT(CODE1)),,COUNT(DISTINCT(CODE1)).Etc.

중간 테이블   3건 SELECT 대출상품코드,SUM(1개월),SUM(2개월),SUM(3개월),COUNT(DISTINCT(CODE1)) ...........(100개 컬럼)
             SELECT 대출상품코드,SUM(4개월),SUM(5개월),SUM(6개월),COUNT(DISTINCT(CODE2)) ...........(100개 컬럼)
             SELECT 대출상품코드,SUM(7개월),SUM(8개월),SUM(9개월),COUNT(DISTINCT(CODE3))  ...........(100개 컬럼)

이런 식으로 중간 TMP 테이블에 SUM한 결과를 한줄이 아닌 3줄로 넣어 놨습니다.

OLD TABLE                  NEW TABLE

SUM(1개월)                 SUM(1개월)
SUM(2개월)                 SUM(2개월)
SUM(3개월)                 SUM(3개월)

............................

이런 식으로 세로로 비교 하여 값을 맞추고 싶습니다.

그런데 데이터가 아예 처음 부터 1줄만 있으면 그 나마 PIVOT을 하면 될듯 한데

이미 1줄을 3줄로 변경해 놓은 상태라 3줄을 한줄로 이어 붙였다가 행을 로우로 변경 하려니 어렵습니다.

혹시 좋은 예제가 있으면 부탁드립니다.

PS.3줄을 한줄로 합치고 다시 행을 열로 변경해야 할듯 한데 사실 너무 막막 하네요

by 마농 [2023.12.06 20:03:57]

행열 전환은 PIVOT / UNPIVOT 로 가능합니다.

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