발생 일자별로 기준은 모두표시 카운트? 1 2 7,504

by 동동동 [SQL Query] Oracle 쿼리 [2023.04.05 16:49:25]


안녕하세요..갑자기 쿼리가 이게 맞나? 라는 생각이 들어 문의 드립니다.

하려고 하는 것이 발생일자 별로 표시 기준이 되는 종류는 모두 표시하려고 하는데요..(해당 일자에 해당 종류가 없어도 표시..)

 

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
by 마농 [2023.04.05 17:06:43]
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
;

 


by 동동동 [2023.04.05 17:15:50]

마농님 감사합니다..^^

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