안녕하세요.
제가 아래와 같이 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를 고정시켜야하는데..^^;; 잘되지않아 요청드립니다.
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) ;