【问题标题】:Teradata filter query to pull all data for a monthTeradata 过滤查询拉取一个月的所有数据
【发布时间】:2015-08-28 21:27:37
【问题描述】:

我在下面有一个查询,它获取我一个月最后一天的数据。在此查询中,ME_DT 被定义为日期时间类型。所以当我在 ME_DT 上做最大值时,它会给我一个月最后一天的数据。我想我需要在 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)

【问题讨论】:

  • 如果这是 Teradata,您可以将标签从 mysql + sql-server 更改为 teradata,并添加普通的 sql 标签。我开始为您更改,但由于您正在积极编辑,我取消了。标题也可以更具体地针对您的要求。

标签: sql teradata


【解决方案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)

【讨论】:

    【解决方案2】:

    我必须在表上使用文件管理器,因为它有数百万条记录...

    我这样做了......但仍在验证我是否得到了我想要的......

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

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 2016-07-08
      • 2020-04-28
      • 2020-07-13
      • 1970-01-01
      • 2016-08-20
      • 2017-03-30
      • 1970-01-01
      • 2011-01-06
      相关资源
      最近更新 更多