2015-08-28 60 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)) 
相关问题