내가 뭔가를 필요에 따라 단지 하나의 레코드를 반환이 삽입 된 일에 대한 기록을 좁힐 좋은 작품오라클의 경우 절
SELECT * FROM(
SELECT
CASE
WHEN TO_CHAR (ADD_MONTHS(:DATEINPUT, 1), 'MM') = '10'
THEN
TO_CHAR (ADD_MONTHS(:DATEINPUT, 1), 'MM')
WHEN SUBSTR (TO_CHAR (ADD_MONTHS(:DATEINPUT, 1), 'MM'), 1, 1) = '0'
THEN
SUBSTR (TO_CHAR (ADD_MONTHS(:DATEINPUT, 1), 'MM'), 2, 1)
ELSE
SUBSTR (TO_CHAR (ADD_MONTHS(:DATEINPUT, 1), 'MM'), 1, 2)
END
AS CUR_MONTH_FRMTD,
P.OPR_DATE,
P.INDICE,
P.LOAD_TYPE,
P.CONTRACT_MONTH,
P.CONTRACT_YEAR,
P.VALUE,
P.DATE_INSERTED,
P.DATE_UPDATED
FROM ZE_DATA.PWX_FWD_CURVE P) Q
WHERE
Q.LOAD_TYPE = 'HLH'
AND Q.INDICE = 'MidC'
AND Q.CONTRACT_YEAR = TO_CHAR(:DATEINPUT, 'YYYY')
AND Q.CONTRACT_MONTH = Q.CUR_MONTH_FRMTD
AND TO_CHAR(Q.DATE_INSERTED, 'MM') = TO_CHAR(:DATEINPUT, 'MM')
AND TO_CHAR(Q.DATE_INSERTED, 'YY') = TO_CHAR(:DATEINPUT, 'YY')
AND TO_CHAR(Q.DATE_INSERTED, 'DD') = TO_CHAR(:DATEINPUT, 'DD')
다음 쿼리를이 곳에서 문. 그러나 문제는 토요일이나 일요일에 기록이 삽입되지 않아 필터링의 유용성을 깨뜨리는 것입니다.
토요일 또는 일요일에는 금요일 데이터를 받아야합니다. 나는 아래의 논리가 효과가있을 것이라고 생각했다. 그러나 이것은 oracle SQL에서 수행 될 수 없습니다.
IF TO_CHAR(:DATEINPUT, 'DAY') = 'SATURDAY' THEN
WHERE
....
AND TO_CHAR(Q.DATE_INSERTED, 'DD') = TO_CHAR(:DATEINPUT-1, 'DD')
ELSE IF TO_CHAR(:DATEINPUT, 'DAY') = 'SUNDAY' THEN
WHERE
....
AND TO_CHAR(Q.DATE_INSERTED, 'DD') = TO_CHAR(:DATEINPUT-2, 'DD')
이 시점에서 나는 select 문에서이 작업을 수행해야합니다. 저장 프로 시저를 사용할 수 없습니다. 누구든지 해결책이나 해결책을 생각할 수 있습니까? 대신 IF 이유는 단지 중첩되지 또는이
Where ...
AND
(
(TO_CHAR(:DATEINPUT, 'DAY') = 'SATURDAY' AND TO_CHAR(Q.DATE_INSERTED, 'DD') = TO_CHAR(:DATEINPUT-1, 'DD'))
OR
(TO_CHAR(:DATEINPUT, 'DAY') = 'SUNDAY' AND TO_CHAR(Q.DATE_INSERTED, 'DD') = TO_CHAR(:DATEINPUT-2, 'DD'))
)
AND ...
이것은 내가 필요한 것입니다. 덕분에 – Zolt
좋은, 좋은 해결책. – fa1c0n3r