Teradata过滤查询将所有数据拉出一个月

时间:2015-08-28 04:11:58

标签: sql teradata

我在下面有一个查询,它会提取一个月最后一天的数据。在此查询中,ME_DT被定义为日期时间类型。因此,当我在ME_DT上执行max时,它会为我提供一个月中最后一天的数据。我想我需要在teradata过滤条件下将日期时间类型转换为整数YYYYMM,这样它就可以为我提供整月的数据,而不仅仅是一个月的最后一天。我应该如何修改现有查询以获得我想要的结果?

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)

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

我必须在桌面上使用filer,因为它有数百万条记录......

我这样做了......但仍在核实我是否有我想要的东西......

(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))