对不起标题中的错误措辞;我无法弄清楚如何简洁地解释我的问题。
我有一个fruit
(apple
,banana
,pear
)列表,想要创建一个如下表格:
fruit eaten
apple yes
banana yes
pear no
从表格看起来像的
fruit quantity
apple 120
banana 30
(请注意,原始表不包括梨)。到目前为止,我已经想出了如何到达:
fruit eaten
apple yes
banana yes
通过查询:
select
fruit,
case when quantity > 0 then "yes" else no end as eaten
from original_table
但我无法弄清楚如何将那些讨厌的梨包括在内。
答案 0 :(得分:1)
如果您有水果桌,您可以这样做:
SELECT
f.fruit
,CASE WHEN ot.quantity > 0 THEN 'yes' ELSE 'no' END as Eaten
FROM
fruit f
LEFT JOIN original_table ot
ON f.fruit = ot.fruit
如果你没有水果桌,那么你需要制作一个。我对hive不太熟悉,但这种技术应该可以在很多不同的平台上运行:
SELECT
f.fruit
,CASE WHEN ot.quantity > 0 THEN 'yes' ELSE 'no' END as Eaten
FROM
(
SELECT 'apple' as fruit
UNION ALL
SELECT 'banana'
UNION ALL
SELECT 'pear'
) f
LEFT JOIN original_table ot
ON f.fruit = ot.fruit