2016-12-27 85 views
0

我想在間隔功能用於使用子查詢與INTERVAL功能中的Teradata

繼使用子查詢,以濾除數據30個月篩選數據是查詢我使用

SEL * FROM my_table WHERE MY_DATE < CURRENT_DATE- INTERVAL '30' MONTH; 

上面查詢工作,但是我想參數化期間'30'使用子查詢。請建議如何實現這一點。

由於提前

+0

你在這裏的參數設置是什麼意思?用戶應該提示價值?爲什麼你需要子查詢? –

+0

我不認爲Teradata會允許你使用子查詢來做到這一點(除了子查詢會給你一個結果集,而不是一個單一的值)。我認爲你需要創建一個存儲過程才能做到這樣的事情。我已經看到存儲過程首先構造查詢並運行它。不幸的是,我不知道它是如何完成的。 – LokMac

+0

我記得它使用了一個查詢整理了一些字符串,最終進行輸出查詢,例如「SELECT'SELECT * FROM my_table WHERE MY_DATE LokMac

回答

0

不要使用年/月區間計算,因爲它會失敗,例如DATE '2016-12-31' + INTERVAL '30' MONTH結果在2019-06-31(根據標準SQL)顯然不存在。

SELECT * 
FROM my_table 
WHERE MY_DATE < ADD_MONTHS(CURRENT_DATE, (SELECT -col FROM tab)); 

如果col實際上是INTERVAL,則需要將其轉換爲INT。

+0

謝謝@dnoeth – user2975559