SQL 질문 0 2 432

by 민속주점 [SQL Query] [2021.06.04 14:03:56]


안녕하세요.

 

제가 아래와 같이 SQL을 작성해야하는데...;; 방도가 떠오르지않아 몰라 여쭙습니다.

크게 TABLE 구성은 2가지 입니다.

1. 코드테이블

code code_nm
A A분류
B B분류
C C분류

2. DATA테이블

raw_id raw_nm code qty
a001 A 100
a002 A 100
a003 A 100
a004 A 200

[원하는 결과 값]

code_nm QTY
A분류 500
B분류 0
C분류 0
합계 500

table에 값이 있든 없는 row를 고정시켜야하는데..^^;; 잘되지않아 요청드립니다.

 

 

by 마농 [2021.06.04 15:04:32]
WITH code_t AS
(
SELECT 'A' code, 'A분류' code_nm FROM dual
UNION ALL SELECT 'B', 'B분류' FROM dual
UNION ALL SELECT 'C', 'C분류' FROM dual
)
, data_t AS
(
SELECT 'a001' raw_id, '가' raw_nm, 'A' code, 100 qty FROM dual
UNION ALL SELECT 'a002', '나', 'A', 100 FROM dual
UNION ALL SELECT 'a003', '다', 'A', 100 FROM dual
UNION ALL SELECT 'a004', '라', 'A', 200 FROM dual
)
SELECT NVL(a.code_nm, '합계') code_nm
     , NVL(SUM(b.qty), 0) qty
  FROM code_t a
  LEFT OUTER JOIN data_t b
    ON a.code = b.code
 GROUP BY ROLLUP(a.code_nm)
;

 


by 민속주점 [2021.06.04 15:56:09]

마농님 감사합니다.

글올리고 이제서야 저도 해결했네요^^ 

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