[MYSQL]월에 따른 일자별 쿼리 만들기 0 1 580

by 쿼린이 [MySQL] 일자별 만들기 [2020.05.29 14:46:28]


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 ))

 

by 마농 [2020.05.29 15:46:36]

달력 테이블 하나 만들어 관리하세요.
달력 테이블과 아우터조인 하시면 됩니다.
http://gurubee.net/article/65315

기존 쿼리도 IF 문이 좀 복잡하네요? 2중 IF 가 필요 없는데요.

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