2015-08-28 88 views
0

我有一個查詢,下面的查詢提取我一個月的最後一天的數據。在這個查詢中,ME_DT被定義爲日期時間類型。所以當我在ME_DT上做最大值時,它會給我一個月的最後一天的數據。我想我需要在teradata過濾器條件中將日期時間類型轉換爲整數YYYYMM,這樣它才能爲整個月份提供數據,而不僅僅是一個月的最後一天。我應該如何修改我現有的查詢以獲得我想要的結果?Teradata過濾器查詢來提取一個月的所有數據

PADW.PL_CURR_DEFN_LOSS_FRCST_ME.ME_DT = 
(select max (PADW.PL_CURR_DEFN_LOSS_FRCST_ME.ME_DT) from PADW.PL_CURR_DEFN_LOSS_FRCST_ME) 
+1

如果這是Teradata,則可以將標記從'mysql' +'sql-server'更改爲'teradata',並添加普通的'sql'標記。我開始爲你改變,但由於你正在積極編輯我取消了。此外,標題可能更具體到你問的。 – codenheim

回答

1

你應該儘量避免在WHERE條件列計算,以獲得更好的估計和可能的索引/分區的訪問:

with cte (dt) as 
(
select max (PADW.PL_CURR_DEFN_LOSS_FRCST_ME.ME_DT) 
from PADW.PL_CURR_DEFN_LOSS_FRCST_ME 
) 

select .... 
where PADW.PL_CURR_DEFN_LOSS_FRCST_ME.ME_DT 
between TRUNC(dt, 'mon') 
    and last_day(dt) 
0

我要上,因爲它的表中使用文件管理器擁有數百萬的記錄...

我這樣做......但還是驗證,如果我能得到我想要的東西......

(PADW.PL_CURR_DEFN_LOSS_FRCST_ME.ME_DT = 
(select max (cast(PADW.PL_CURR_DEFN_LOSS_FRCST_ME.ME_DT as date format 'YYYYMM')) from PADW.PL_CURR_DEFN_LOSS_FRCST_ME)) 
相關問題