POSTGRE 날짜조건 질문 0 1 7,081

by 흰둥이 [SQL Query] postgresql 쿼리 조건 SQL SELECT 날짜 [2024.09.26 10:54:41]


POSTGRE로 작성중인데

기준일자 = 20240312
=> BASC_YM IN (202401, 202402) / 해당년도 01월부터 기준일자의 전월까지

기준일자 = 20240412
=> BASC_YM IN (202401, 202402, 202403) / 해당년도 01월부터 기준일자의 전월까지


기준일자 = 20240112
=> BASC_YM IN (202412, 202401) / 기준일자가 1월인 경우에만 해당년도 1월과 전월인 12월 포함

 

WHERE 절에 이런식으로 조건을 하려면 어떻게 해야하나요ㅠㅠ 

 

    AND TA.BASC_YM BETWEEN SUBSTR('${BASC_DT}',1,4)||'01' 
                AND (
                            CASE WHEN SUBSTR('${BASC_DT}',5,2) = '01' THEN SUBSTR('${BASC_DT}',1,6) 
                                 ELSE TO_CHAR(ADD_MONTHS(TO_DATE('${BASC_DT}','YYYYMMSS'),-1),'YYYYMM') 
                            END
                    ) 

현재는 이렇게 해놨는데 저러면 1월 조회할때 12월이 안뽑혀서요!!

by 우주민 [2024.09.26 14:32:07]
AND TA.BASC_YM  
    BETWEEN (CASE WHEN SUBSTR('${BASC_DT}',5,2) = '01' 
                  THEN TO_CHAR(ADD_MONTHS(TO_DATE('${BASC_DT}','YYYYMMSS'),-1),'YYYYMM') 
                  ELSE SUBSTR('${BASC_DT}',1,4)||'01' 
                  END)
        AND (CASE WHEN SUBSTR('${BASC_DT}',5,2) = '01' 
                  THEN SUBSTR('${BASC_DT}',1,6) 
                  ELSE TO_CHAR(ADD_MONTHS(TO_DATE('${BASC_DT}','YYYYMMSS'),-1),'YYYYMM') 
                  END) 

between 의 시작 조건을 수정했습니다.

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