如果我有一個表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