안녕하세요.
쿼리 조회결과 기존에서 변경된 표 결과처럼 행/열을 변경하여 출력가능한가요?
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 |
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
;