我有一张只有一列" tgt_dt"和10条记录:日期" 2015-09-01",日期" 2015-02-01",日期" 2015-08-10"等。
我需要使用这些日期作为条件来选择花药表。即,在sql中,我可以这样做:
select T2.tgt_dt, A,B, C,sum(D)
from TableA T1,
TableB T2
where T1.date between T2.tgt_dt - 90 and T2.tgt_dt
group by T2.tgt_dt, A,B, C
蜂巢中最好的方法是什么?
答案 0 :(得分:1)
您可以在这里进行笛卡尔联盟:
select T2.tgt_dt, A,B, C,sum(D)
from
TableA T1
JOIN
TableB T2
where T1.date between T2.tgt_dt - 90 and T2.tgt_dt
group by T2.tgt_dt, A,B, C
如果你想要一种更有效的方法,你可以做类似的事情:
select b.tgt_dt, A,B, C,sum(D)
from
TableA T1
LATERAL VIEW explode(array('date1','date2','date3')) b as tgt_dt
where T1.date between b.tgt_dt - 90 and b.tgt_dt
group by b.tgt_dt, A,B, C