안녕하세요..갑자기 쿼리가 이게 맞나? 라는 생각이 들어 문의 드립니다.
하려고 하는 것이 발생일자 별로 표시 기준이 되는 종류는 모두 표시하려고 하는데요..(해당 일자에 해당 종류가 없어도 표시..)
WITH T_종류 AS ( SELECT 'A' CD, '과일' NM, 1 RN FROM DUAL UNION ALL SELECT 'B' CD, '야채' NM, 2 RN FROM DUAL UNION ALL SELECT 'C' CD, '기타' NM, 3 RN FROM DUAL ) , T_일자 AS ( SELECT '20230404' DY, 'A' CD, '사과' NM FROM DUAL UNION ALL SELECT '20230404' DY, 'A' CD, '귤' NM FROM DUAL UNION ALL SELECT '20230404' DY, 'B' CD, '배추' NM FROM DUAL UNION ALL SELECT '20230405' DY, 'B' CD, '배추' NM FROM DUAL ) SELECT A.DY , B.CD , B.NM , B.RN , SUM(DECODE(B.CD, A.CD, 1, 0)) CNT FROM T_일자 A , T_종류 B GROUP BY A.DY , B.CD , B.NM , B.RN ORDER BY A.DY, B.RN;
이렇게 해서 원하는 결과는 나왔는데..갑자기 이게 맞나? 라는 생각이 들어서요...머리 속이 하얗네요..ㅠㅠ
[결과 값]
DY | CD | NM | RN | CNT |
20230404 | A | 과일 | 1 | 2 |
20230404 | B | 야채 | 2 | 1 |
20230404 | C | 기타 | 3 | 0 |
20230405 | A | 과일 | 1 | 0 |
20230405 | B | 야채 | 2 | 1 |
20230405 | C | 기타 | 3 | 0 |
WITH T_종류 AS ( SELECT 'A' cd, '과일' nm, 1 rn FROM dual UNION ALL SELECT 'B', '야채', 2 FROM dual UNION ALL SELECT 'C', '기타', 3 FROM dual ) , T_일자 AS ( SELECT '20230404' dy, 'A' cd, '사과' nm FROM dual UNION ALL SELECT '20230404', 'A', '귤' FROM dual UNION ALL SELECT '20230404', 'B', '배추' FROM dual UNION ALL SELECT '20230405', 'B', '배추' FROM dual ) SELECT b.dy, a.cd, a.nm, a.rn , COUNT(b.cd) cnt FROM T_종류 a LEFT OUTER JOIN T_일자 b PARTITION BY (b.dy) ON a.cd = b.cd GROUP BY b.dy, a.cd, a.nm, a.rn ORDER BY dy, rn ;