2015-10-19 43 views
2

我有一个表只有一列“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 

在蜂巢中这样做的最佳方法是什么?

回答

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 
+0

你的第一个anwswer是pratically一样,我的问题,配置单元不支持不等连接,我相信 – zyenge

+0

它不是一个不等于连接,它是一个笛卡尔连接,这个连接应该支持。 –

+0

你是对的,我的错误,配置单元在后来的版本中添加了“之间”,我忘记了这一点。 – zyenge