W_CODE | W_NAME | A_KEY | A_VALUE | A_SEQ | A_CODE | A_NAME | USE_YN |
AUTH | 날짜 범위 관련 | STARTDATE | 2017010108 | 1 | DATE | 시작일자 | Y |
AUTH | 날짜 범위 관련 | ENDDATE | 2018010117 | 2 | DATE | 종료일자 | Y |
PK : W_CODE, A_KEY, A_VALUE, A_SEQ
이와 같은 테이블 데이터를가지고 현재날짜가 위 A_VALUE값 안에 포함이 되는지마는지에 대한
여부를 가져오고 싶습니다.
A_VALUE는 실제로 VARCHAR지만 값은 년월일+시간 까지 입력되도록 되어있습니다.
도움 부탁 드립니다.
WITH t(w_code, w_name, a_key, a_value, a_seq, a_code, a_name, use_yn) AS ( SELECT 'AUTH', '날짜 범위 관련', 'STARTDATE', '2017010108', 1, 'DATE', '시작일자', 'Y' FROM dual UNION ALL SELECT 'AUTH', '날짜 범위 관련', 'ENDDATE' , '2018010117', 2, 'DATE', '종료일자', 'Y' FROM dual ) SELECT w_code , startdate , enddate , curdate , CASE WHEN curdate BETWEEN startdate AND enddate THEN 1 ELSE 0 END flag FROM (SELECT w_code , MIN(DECODE(a_key, 'STARTDATE', a_value)) startdate , MIN(DECODE(a_key, 'ENDDATE', a_value)) enddate , TO_CHAR(sysdate, 'yyyymmddhh24') curdate FROM t WHERE use_yn = 'Y' GROUP BY w_code ) ;