我在下面有一个查询,它会提取一个月最后一天的数据。在此查询中,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)
答案 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))