首页 > 解决方案 > Hive 获得 where 子句的两个值的最小值

问题描述

我正在尝试编写一个配置单元查询,以便我需要使用基于日期的 where 子句来过滤记录。

WHERE date_key 
BETWEEN date_sub(current_date, 4) 
  AND MINIMUM(date_sub(current_date, 1), to_date("2018-10-14"))

我们可以做类似MINIMUM两个值的事情吗?

标签: sqlhive

解决方案


如果您使用的是 oracle,那么有一个名为“least”的关键字将输出较小的值。例如:

WHERE date_key 
BETWEEN date_sub(current_date, 4) 
  AND LEAST(date_sub(current_date, 1), to_date("2018-10-14"))

否则,您可以手工制作查询以比较两个值,如下所示

WHERE date_key 
BETWEEN date_sub(current_date, 4) 
  AND (CASE WHEN date_sub(current_date, 1)< to_date("2018-10-14") THEN 
                 date_sub(current_date, 1)
            ELSE to_date("2018-10-14")
        END) 

推荐阅读