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

rpppsulh  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(427)

在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

为什么datediff不能再计算datediff了,有人有想法吗?谢谢

mu0hgdu0

mu0hgdu01#

这应该会产生预期的结果

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';
ljsrvy3e

ljsrvy3e2#

使用窗口功能:

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

字符串不会被解释为子查询。
(如果您确实希望逻辑执行此操作,则可以添加1。)

相关问题