hiveql—从日期小于最大日期的配置单元表中选择

g0czyy6m  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(340)

我试图从一个配置单元表中选择*,其中一个名为trans\u date的日期列大于最大trans\u日期前的365天。
以下是我迄今为止尝试过的问题:

select * from TABLE
where (TRANS_DATE > DATE_SUB(max(TRANS_DATE), 365)) and 
        (TRANS_DATE < max(TRANS_DATE));

下面是我得到的错误:“编译语句时出错:failed:semanticexception[error 10128]:行2:28 not yet supported place for udaf'max'”
日期格式的一个示例是:“2006-05-30 00:00:00.0”
查询是将数据从配置单元表读取到qlikview中,因此理想情况下,我不希望预先定义变量,而是希望动态地执行select。抱歉,如果这是愚蠢的,因为我是新来的Hive。

6pp0gazn

6pp0gazn1#

计算子查询中的最大日期并与表交叉联接:

select * 
  from TABLE a
       cross join --cross join with single row
       (select max(TRANS_DATE) as max_trans_date from TABLE) b 
 where (a.TRANS_DATE > DATE_SUB(b.max_trans_date, 365)) 
   and (a.TRANS_DATE < b.max_trans_date);

具有分析功能:

select a.* from
(select a.*,
       max(TRANS_DATE) over() as max_trans_date 
  from TABLE a) a
 where (a.TRANS_DATE > DATE_SUB(a.max_trans_date, 365)) 
   and (a.TRANS_DATE < a.max_trans_date);

相关问题