[英]Oracle/SQL Find Date or Closest date to specified date
我正在嘗試在創建值的oracle中運行查詢。 基礎表並不總是包含特定日期的匹配項。 因此,我必須找到具有指定日期的記錄,或者找到指定日期以下的最接近日期。
SUM(CASE
WHEN S.VAL_SECURITY NOT IN ('GBP')
AND E.SECURITY_ID NOT IN ('GBP')
THEN (
(((amount) * - 1) / nvl(s.minor_per_unit, 1)) * (
SELECT EXCHANGE_RATE
FROM ISET.PREVIOUS_PRICES
WHERE ISET.PREVIOUS_PRICES.SECURITY_ID = E.SECURITY_ID
AND VAL_DATE = TO_DATE('05/08/2019', 'DD/MM/YYYY')
)
) * (
SELECT EXCHANGE_RATE
FROM ISET.PREVIOUS_PRICES
WHERE SECURITY_ID = S.VAL_SECURITY
AND VAL_DATE = TO_DATE('05/08/2019', 'DD/MM/YYYY')
)
WHEN S.VAL_SECURITY IN ('GBP')
AND E.SECURITY_ID NOT IN ('GBP')
THEN (
(((amount) * - 1) / nvl(s.minor_per_unit, 1)) * (
SELECT EXCHANGE_RATE
FROM ISET.PREVIOUS_PRICES
WHERE ISET.PREVIOUS_PRICES.SECURITY_ID = E.SECURITY_ID
AND VAL_DATE = TO_DATE('05/08/2019', 'DD/MM/YYYY')
)
)
ELSE ((amount) * - 1) / nvl(s.minor_per_unit, 1)
END) GBP_VALUE
有問題的代碼是
E.SECURITY_ID AND VAL_DATE = TO_DATE('05/08/2019', 'DD/MM/YYYY')
因此,假設它找不到指定日期的記錄,則需要找到最接近但低於指定日期的最大日期記錄。
任何幫助將不勝感激。
謝謝
我認為您正在此選擇中尋找前1名:
SELECT EXCHANGE_RATE
FROM ISET.PREVIOUS_PRICES
WHERE ROWNUM = 1
AND ISET.PREVIOUS_PRICES.SECURITY_ID=E.SECURITY_ID
AND VAL_DATE <= TO_DATE('05/08/2019', 'DD/MM/YYYY')
ORDER BY VAL_DATE DESC
嘗試編輯此內容,在where條件下使用ROWNUM = 1
你可以試試這個嗎? 我還沒有驗證。
val_date =
(SELECT val_date
FROM (SELECT MAX (b.val_date) val_date,
MIN (TO_DATE ('05/08/2019', 'DD/MM/YYYY') - b.val_date)
diff
FROM PREVIOUS_PRICES b
WHERE SECURITY_ID = E.SECURITY_ID
AND status_date <= TO_DATE ('05/08/2019', 'DD/MM/YYYY')
UNION ALL
SELECT MIN (val_date),
MIN (b.val_date - TO_DATE ('05/08/2019', 'DD/MM/YYYY'))
FROM PREVIOUS_PRICES b
WHERE SECURITY_ID = E.SECURITY_ID
AND status_date > TO_DATE ('05/08/2019', 'DD/MM/YYYY')
ORDER BY 2)
WHERE ROWNUM = 1)
再使用一個嵌入式SQL級別
SELECT EXCHANGE_RATE
FROM ISET.PREVIOUS_PRICES
WHERE ISET.PREVIOUS_PRICES.SECURITY_ID = E.SECURITY_ID
AND VAL_DATE = (
SELECT MAX(val_date)
FROM iset.previous_prices
WHERE val_date <= TO_DATE ( '05/08/2019', 'DD/MM/YYYY' )
and PREVIOUS_PRICES.SECURITY_ID = E.SECURITY_ID);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.