날짜 범위 관련 힌트 부탁 드립니다! 0 4 634

by naverTT [2019.04.24 14:08:46]


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지만 값은 년월일+시간 까지 입력되도록 되어있습니다.

도움 부탁 드립니다.

 

by 마농 [2019.04.26 08:44:48]

테이블 구조가 뭔가 이상합니다.
 - 중복되는 컬럼명도 보이고
 - 키가 뭔지 구별하기 어렵구요.


by naverTT [2019.05.03 09:30:49]

다시 수정하였습니다!


by 마농 [2019.05.03 11:43:00]

지료가 2개 뿐인가요? 더 많을 듯 한데요?

위 2개 자료가 쌍을 이루어야 하는데.

그러려면 두 레코드 사이에 연결고리가 있어야 하는데.

예시가 빈약하여 추측하기 어렵네요.

좀더 많은 다양한 예제가 필요할 듯 하네요.


by 마농 [2019.05.07 11:19:59]
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
        )
;

 

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