我有以下疑问:
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 )
它努力将记录缩小到插入日,只按要求归还一个记录。 但问题是,星期六或星期天没有列入任何记录,从而打破过滤的有用性。
星期六或星期日 我需要获得星期五的数据。 我认为,以下这样的逻辑将会奏效。 但这不能在单体内进行。
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 )
现在,我需要作一个选择发言。 能够使用储存的程序。 谁会想解决办法或工作?