SELECT JOIN_GUBUN
, IF( sum(IF( '202001' = SUBSTR( JOIN_DAY, 1, 6 ), 1 , 0 )) != 0 ,SUM(IF( '202001' = SUBSTR( JOIN_DAY, 1, 6 ), 1 , 0 )) , 0) AS JAN
, IF( sum(IF( '202002' = SUBSTR( JOIN_DAY, 1, 6 ), 1 , 0 )) != 0 ,SUM(IF( '202002' = SUBSTR( JOIN_DAY, 1, 6 ), 1 , 0 )) , 0) AS FEB
, IF( sum(IF( '202003' = SUBSTR( JOIN_DAY, 1, 6 ), 1 , 0 )) != 0 ,SUM(IF( '202003' = SUBSTR( JOIN_DAY, 1, 6 ), 1 , 0 )) , 0) AS MAR
현재 이런형태로 월별 쿼리는 추출하였습니다.
그러나 1월에 따른 일자별 쿼리를 출력하고 싶은데 값이 없더라도 데이터가 뿌려졌으면 좋겠습니다.
A B -> 이값은 구분값
2020-01-01 1 2 -> 이값은 합계값
2020-01-02 3 2
2020-01-03
2020-01-04
이런형태로 구분에 따른 일자별 쿼리를 만들고 싶은데 이것을 년도랑 월만 전달되면 데이터가 2월1일 ~2월 28일, 년도+3월 전달하면 3월1일부터 3월31일까지
이런식으로 변형이 되는 쿼리를 만들고 싶습니다.
함수가 도저히 못찾겠었어서 혹시 이렇게 접근이 가능한 방법이 있을까요/???/
오라클로 일자를 나열하게 만들려고하는 쿼리인데 저는 지금 MYSQL 로 구현을 해야합니다.
오라클 참고 쿼리
SELECT *
FROM (SELECT (CASE
WHEN LEVEL < 10
THEN '2020' || '01' || '0' || LEVEL
ELSE '2020' || '01' || LEVEL
END
) AS SEQ
FROM DUAL
CONNECT BY LEVEL <= TO_NUMBER(SUBSTR(TO_CHAR(LAST_DAY (TO_DATE ('2020' || '01' || '01000000', 'YYYYMMDDHH24MISS')), 'YYYYMMDD'), 7, 2 ))
달력 테이블 하나 만들어 관리하세요.
달력 테이블과 아우터조인 하시면 됩니다.
http://gurubee.net/article/65315
기존 쿼리도 IF 문이 좀 복잡하네요? 2중 IF 가 필요 없는데요.