如何在Hive中使用子查询获取日期差异

时间:2017-04-25 20:49:37

标签: sql hive

在Hive中,我有一个查询来获取产品的最短日期

SELECT min(expire_date) FROM warehouse WHERE product='Salad'

得到结果' 2017-03-04'。

我还有一个查询来获取所有产品的日期差异,并且它正在运行

SELECT product, import_date, datediff(import_date, '2017-01-01')+1, product from warehouse WHERE product='Salad';

但我想结合日期差异:

SELECT product, import_date, datediff(import_date, 'SELECT min(expire_date) FROM warehouse WHERE product=\'Salad\'')+1, from warehouse WHERE product='Salad';

我将拥有以下内容:

Salad 2017-04-23    NULL
Salad 2017-04-23    NULL
Salad 2017-04-18    NULL

为什么dateiff不能计算dateiff,任何人都有想法?感谢

2 个答案:

答案 0 :(得分:0)

使用窗口功能:

SELECT product, import_date, datediff(import_date, min(expire_date) over (partition by salad))
FROM warehouse
WHERE product = 'Salad';

字符串不会被解释为子查询。

(如果这是你真正想要的逻辑,你可以加1。)

答案 1 :(得分:0)

这应该给出期望的结果

SELECT w.product, w.import_date, datediff(w.import_date, t.min_date)+1, from warehouse w, (SELECT min(expire_date) as min_date FROM warehouse WHERE product='Salad') t WHERE w.product='Salad';