对于结果中缺少的值,如何返回显示“否”的列?

时间:2016-11-21 16:47:46

标签: sql hiveql

对不起标题中的错误措辞;我无法弄清楚如何简洁地解释我的问题。

我有一个fruitapplebananapear)列表,想要创建一个如下表格:

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

但我无法弄清楚如何将那些讨厌的梨包括在内。

1 个答案:

答案 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