안녕하세요.
쿼리 조회결과 기존에서 변경된 표 결과처럼 행/열을 변경하여 출력가능한가요?
1 2 3 4 5 6 7 8 9 10 11 12 13 | SELECT TB_HOS.HOS_NAME, TB_CD.ACC_NAME2 AS ACC_NAME, SUM (TB_MONEY.HEINS_AMT) AS 금액A, SUM (TB_MONEY.CARE_AMT) AS 금액B FROM TB_HOS INNER JOIN TB_MONEY ON (TB_HOS.FY_YYYY=TB_MONEY.FY_YYYY and TB_HOS.HOS_CODE=TB_MONEY.HOS_CODE) INNER JOIN TB_CD TB_CD ON (TB_MONEY.ACC_CODE=TB_CD.ACC_CODE) WHERE 1=1 GROUP BY TB_HOS.HOS_NAME, TB_CD.ACC_NAME2 |
[현재결과]
병원명 | 과 | 금액A | 금액B |
서울병원 | 내과 | 10000 | 20000 |
서울병원 | 안과 | 20000 | 30000 |
서울병원 | 피부과 | 40000 | 50000 |
서울병원 | 비뇨기과 | 60000 | 80000 |
[변경결과]
병원명 | 금액구분 | 내과 | 안과 | 피부과 | 비뇨기과 |
서울병원 | A | 10000 | 20000 | 40000 | 60000 |
서울병원 | B | 20000 | 30000 | 50000 | 80000 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | WITH tb_hos AS ( SELECT '2023' fy_yyyy, 's' hos_code, '서울병원' hos_name ) , tb_money AS ( SELECT '2023' fy_yyyy, 's' hos_code, 1 acc_code, 10000 heins_amt, 20000 care_amt UNION ALL SELECT '2023' , 's' , 2, 20000, 30000 UNION ALL SELECT '2023' , 's' , 3, 40000, 50000 UNION ALL SELECT '2023' , 's' , 4, 60000, 80000 ) , tb_cd AS ( SELECT 1 acc_code, '내과' acc_name2 UNION ALL SELECT 2, '안과' UNION ALL SELECT 3, '피부과' UNION ALL SELECT 4, '비뇨기과' ) , tmp AS ( SELECT a.hos_name , c.acc_name2 acc_name , SUM (b.heins_amt) A , SUM (b.care_amt) B FROM tb_hos a INNER JOIN tb_money b ON a.fy_yyyy = b.fy_yyyy AND a.hos_code = b.hos_code INNER JOIN tb_cd c ON b.acc_code = c.acc_code WHERE 1=1 GROUP BY a.hos_name, c.acc_name2 ) SELECT * FROM tmp UNPIVOT (v FOR gb IN ([A], [B])) a PIVOT ( SUM (v) FOR acc_name IN ([내과], [안과], [피부과], [비뇨기과])) b ; |