为什么在Hiveql中不起作用?
create table hist (
id int,
state int,
create_date string);
insert into hist values (1, 1, '2017-01-01');
insert into hist values (1, 1, '2017-02-01');
insert into hist values (1, 1, '2017-03-01');
insert into hist values (1, 2, '2017-02-01');
insert into hist values (1, 2, '2017-03-01');
insert into hist values (1, 2, '2017-04-01');
WITH MonthEnd as
(select to_date(trunc(add_months(current_date, -1), 'MM'))
MonthEndDate)
SELECT date_add(MAX(a.create_date), 0)
FROM hist a, monthend me
where a.create_date <=
(select max(b.create_date) from hist b
where a.id=b.id and b.state=2
and b.create_date < me.MonthEndDate) x
and a.state=1 and a.create_date < me.MonthEndDate;
我希望得到的答案是“ 2017-03-01”,但我却得到了这个答案:
Error while compiling statement: FAILED: ParseException line 20:24 cannot recognize input near 'select' 'max' '(' in expression specification
侧面说明:在执行之前,我要突出显示Hue中的底部select语句。 select语句在第13-17行。选择查询后还有其他注释代码。因此,我不知道为什么说编译错误在第20行。
我发现与该建议非常接近的唯一StackOverflow问题将我命名为子查询。这就是为什么我在其后添加“ x”的原因。它没有帮助。同样的错误。
子查询本身可以工作:
WITH MonthEnd as
(select to_date(trunc(add_months(current_date, -1), 'MM'))
MonthEndDate)
select max(b.create_date) from hist b, monthend me
where b.state=2 and b.create_date < me.MonthEndDate;
2017-04-01
在此先感谢任何人可以在此处提供的见解!