mssql 쿼리 행열 변경 0 1 3,454

by 밍밍밍밍 [SQLServer] [2025.03.17 17:06:34]


안녕하세요.

쿼리 조회결과 기존에서 변경된 표 결과처럼 행/열을 변경하여 출력가능한가요?

 

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

 

 

by 마농 [2025.03.17 18:59:50]
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
;

 

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