- 년도 : 2013
- 분기 : 3
* SQL1
SELECT '2013' AS YEAR , LPAD(1 + (QT * 3), 2, '0') || '01' AS ST_MD , LPAD(3 + (QT * 3), 2, '0') || '31' AS END_MD FROM ( SELECT '3' - 1 AS QT FROM DUAL) X* 결과1
YEAR | ST_MD | END_MD |
---|---|---|
2013 | 0701 | 0931 |
* SQL2
위 SQL1에서는 해당 분기의 마지막 일자를 31일로 고정시켰으나 정확하게 하기 위해서는 입력 년도와 계산에 의한 월을 가지고 LAST_DAY함수를 사용해야 함.
SELECT '2013' AS YEAR , LPAD(1 + (QT * 3), 2, '0') || '01' AS ST_MD , LPAD(3 + (QT * 3), 2, '0') || TO_CHAR(LAST_DAY(TO_DATE('2013'||LPAD(3 + (QT * 3), 2, '0'), 'YYYYMM')), 'DD') AS END_MD FROM ( SELECT '3' - 1 AS QT FROM DUAL) X* 결과2
YEAR | ST_MD | END_MD |
---|---|---|
2013 | 0701 | 0930 |
상기의 SQL을 인라인뷰(자주 사용된다면 함수로 등록)로 하여 대상 테이블의 BETWEEN 조건으로 활용하면 됨.
댓글 없음:
댓글 쓰기