안녕하세요. 질문같지도 안은 질문이고 상식상 맞지 않는 질문을 드릴수도 있으나. 많은 검색과 삽질을 해보았으나 아직 해결을 못해서 올립니다.
해당 테이블에 등록되어있는 로우들 중에 현재 시간과 등록된 시간값들을 비교해서 오차범위를 1시간 30분 10분 5분 단위로 값을 가져오려고 합니다. 아직 제가 정리가 잘안된부분도 있으나 현재까지 제가 작업햇던부분은 이렇게 됩니다.
SELECT
TO_CHAR(START_DATE, 'YYYY-MM-DD') AS START_DATE_DP
, A.*
FROM (
SELECT
SEQ
, TITLE
, CONTENT
, START_DATE
, END_DATE
, STATUS_ALARM
, STATUS_CD
FROM
SERVERCHECK
WHERE
DEL_FL != 'Y'
AND STATUS_ALARM != 'E'
AND TO_CHAR(SYSDATE, 'YYYYMMDD') = TO_CHAR(START_DATE, 'YYYYMMDD')
AND TO_CHAR(SYSDATE, 'HH24') (TO_CHAR(START_DATE, 'HH24') - 1)
) A
WHERE
내부 where 조건에서 처럼 현재 년월일이 일치하며 등록된 시작 시간 -1 이 현재 시간보다 작거나 같을때 참이 됩니다.
내부 A 까지는 select진행시 예상한 조건에 맞게 검색이 되는것을 확인했으며
그 내부에 조건에 있는 row에
CASE
WHEN STATUS_ALARM = 'N' THEN '1'
WHEN STATUS_ALARM = '1' THEN '2'
WHEN STATUS_ALARM = '2' THEN '3'
WHEN STATUS_ALARM = '3' THEN 'E'
END AS ALARM.NOTI
case 문을 추가해서 STATUS_ALARM의 값을 변경 하려 합니다.
추가로 case 문의 변경된 STATUS_ALARM의 상태에 따라서 STATUS_CD 의 값도 추가로 update 문을 사용해서 업데이트를 하려 하는데요
해당부분에 대한 쿼리작성진행을 어떻게 해야할지 모르겠네요.
너무 두서없이 적은것 같아 죄송합니다.