2016-11-05 2 views
0

私は外部クエリに適用した日付変数を持っていますが、エラーメッセージが表示されます。v_Dateは、使用されているコンテキストでは無効です。内部クエリで使用しようとしています。SQL DB2日付変数を内部クエリに適用する方法は?

内部クエリの3/31/2016の2つの日付を時間変数v_Dateに置き換えることができますか? WITH行を移動する必要がありますかダブル・ジョインをしますか?

WITH ttt as (select '3/31/2016' v_Date FROM SYSIBM.SYSDUMMY1) 

SELECT 
fpr.ID 
fpr.ID_PRICG_MTHDY, 
fpr.MARKET_DATE, 
fpr.PRICE_AMOUNT AS FIRST_PRICE, 
pr.PRICE_AMOUNT AS SECOND_PRICE, 
pr2.PRICE_AMOUNT AS THIRD_PRICE, 
thr.PRICE_DIFF AS TEST_1, 
thr.PRICE_DIFF2 AS TEST_2 
FROM PRICE_TABLE_1 fpr 

    LEFT JOIN PRICE_TABLE0 pr 
    ON fpr.ID = pr.ID AND pr.MARKET_DATE = '3/31/2016' AND pr.ROLE_TYPE = 'D' 
    LEFT JOIN PRICE_TABLE0 pr2 
    ON fpr.ID = pr2.ID and pr2.MARKET_DATE = '3/31/2016' AND pr2.ROLE_TYPE = 'P' 
    LEFT JOIN THRESHOLD_TEST_TABLE thr 
    ON fpr.ID_PRICG_MTHDY = thr.ID_PRICG_MTHDY 

JOIN ttt ON fpr.MARKET_DATE = v_Date 

WHERE fpr.DT_EXPTN = '1/1/9999' 
    AND fpr.MARKET_DATE = fpr.SELL_DATE 
    AND fpr.TYPE = 'F' 
    AND fpr.ID_PRICG_MTHDY IN (1, 3, 4, 7) 

答えて

1

私はFROMの最初の要素としてCTEで開始すると、あなたはどこにでも値を使用することができます。

FROM ttt LEFT JOIN 
    PRICE_TABLE_1 fpr 
    ON fpr.MARKET_DATE = v_Date LEFT JOIN 
    PRICE_TABLE0 pr 
    ON fpr.ID = pr.ID AND pr.MARKET_DATE = ttt.v_date AND pr.ROLE_TYPE = 'D' LEFT JOIN 
    PRICE_TABLE0 pr2 
    ON fpr.ID = pr2.ID and pr2.MARKET_DATE = ttt.v_date AND pr2.ROLE_TYPE = 'P' LEFT JOIN 
    THRESHOLD_TEST_TABLE thr 
    ON fpr.ID_PRICG_MTHDY = thr.ID_PRICG_MTHDY 
+0

おかげで、完璧に動作します。 – steveW

関連する問題