PIVOT 함수 질문 0 3 3,006

by 힘내라김대리 [SQLServer] PIVOT SQL Server Query [2024.01.11 14:52:13]


PIVOT 쿼리 질문이 있습니다.

 

데이터가 아래와 같이 있습니다.

 

USER_NO TEAM TOTAL_AMOUNT TOTAL_QTY VISIT_CNT
AAA TEAM_A 10000 2 1
AAA TEAM_B 20000 1 1
AAA TEAM_C 0 0 0
AAA TEAM_D 0 0 0
BBB TEAM_A 20000 4 2
BBB TEAM_B 0 0 0
BBB TEAM_C 0 0 0
BBB TEAM_D 0 0 0

 이렇게 되어있는 데이터를 PIVOT 또는 다른 쿼리를 이용하여 아래표와 같이 표현하고 싶습니다.

 

USER_NO TEAM_A (TOTAL_AMOUNT) TEAM_A (TOTAL_QTY) TEAM_A (VISIT_CNT) TEAM_B (TOTAL_AMOUNT) TEAM_B (TOTAL_QTY) TEAM_B (VISIT_CNT) ......
AAA 10000 2 1 20000 1 1 ...
BBB 20000 4 2 0 0 0 ...

 

 

이렇게 열로 되어있는 것을 행으로 변경하고 싶습니다.

 

어떻게 쿼리를 만들어야 할까요?

by 마농 [2024.01.11 16:39:22]
WITH t AS
(
SELECT 'AAA' user_no, 'TEAM_A' team, 10000 total_amount, 2 total_qty, 1 visit_cnt
UNION ALL SELECT 'AAA', 'TEAM_B', 20000, 1, 1
UNION ALL SELECT 'AAA', 'TEAM_C',     0, 0, 0
UNION ALL SELECT 'AAA', 'TEAM_D',     0, 0, 0
UNION ALL SELECT 'BBB', 'TEAM_A', 20000, 4, 2
UNION ALL SELECT 'BBB', 'TEAM_B',     0, 0, 0
UNION ALL SELECT 'BBB', 'TEAM_C',     0, 0, 0
UNION ALL SELECT 'BBB', 'TEAM_D',     0, 0, 0
)
SELECT user_no
     , SUM(CASE team WHEN 'TEAM_A' THEN total_amount END) amt_A
     , SUM(CASE team WHEN 'TEAM_A' THEN total_qty    END) qty_A
     , SUM(CASE team WHEN 'TEAM_A' THEN visit_cnt    END) cnt_A
     , SUM(CASE team WHEN 'TEAM_B' THEN total_amount END) amt_B
     , SUM(CASE team WHEN 'TEAM_B' THEN total_qty    END) qty_B
     , SUM(CASE team WHEN 'TEAM_B' THEN visit_cnt    END) cnt_B
     , SUM(CASE team WHEN 'TEAM_C' THEN total_amount END) amt_C
     , SUM(CASE team WHEN 'TEAM_C' THEN total_qty    END) qty_C
     , SUM(CASE team WHEN 'TEAM_C' THEN visit_cnt    END) cnt_C
     , SUM(CASE team WHEN 'TEAM_D' THEN total_amount END) amt_D
     , SUM(CASE team WHEN 'TEAM_D' THEN total_qty    END) qty_D
     , SUM(CASE team WHEN 'TEAM_D' THEN visit_cnt    END) cnt_D
  FROM t
 GROUP BY user_no
;

 


by 힘내라김대리 [2024.01.12 09:09:33]

감사합니다~ 혹시 속도를 좀 높이려면 어떻게 해야할까요?


by 마농 [2024.01.12 09:47:09]

속도를 높이려면 튜닝해야죠.
전체 쿼리 및 실행계획을 보고 비효율을 찾아 제거해야 합니다.
테이블 및 인덱스 정보, 건수정보, 분포도, 테이블 간의 관계 등
여러가지 정보들을 가지고 복합적으로 판단해야 합니다.

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