我有以下查詢甲骨文如果where子句
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')
在這一點上,我需要使這個工作在一個選擇語句。無法使用存儲過程。任何人都可以想到一個解決方案或解決方法?
這只是我需要的。謝謝 – Zolt 2012-04-23 21:24:06
不錯,很好的解決方案。 – fa1c0n3r 2012-09-07 12:43:19