如果我有一个表mytable
和列表如何与列表交叉连接表格?
set vals = (1,2,3,4);
,我想交叉联接与名单表(获得其中有4个时间尽可能多的行与原始表和一个额外val
新表列),我有比创建an explicit temp table更好的选择吗?
什么我可以做的是:
select a.*, b.val
from mytable a cross join
(select stack(4,1,2,3,4) as (val) from
(select * from mytable limit 1) z) b;
编辑:我主要用例是通过-hiveconf vals='4,1,2,3,4'
到hive
,并在上面的代码与stack(${hiveconf:vals})
更换stack(4,1,2,3,4)
。
你不能使用联盟? like(select 1 as stg union select 2 union select 3 union selec 4)? – PeterRing
@PeterRing:我认为'union'会比我现在更糟糕,但请使用它发布一个答案! – sds