2016-11-21 9 views
0

タイトルの貧しいフレーズには申し訳ありません。私は私の質問を簡潔に説明する方法を理解できません。結果に値がない場合は「いいえ」と表示されている列を返すにはどうすればよいですか?

私は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 

しかし、私はそれらの厄介な梨が含まれるように取得する方法を見つけ出すことはできません。

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 

あなたはフルーツのテーブルを持っていない場合、あなたは1を行う必要があります。あなたはフルーツのテーブルを持っている場合は

+2

どのテーブルに果物のリストがありますか? –

+0

'FULL LEFT JOIN'の使用をチェックしてください。 – FDavidov

+1

AS @ Prdpは、 "original_table"は梨が欲しいということを知ることができないので、リストに含まれたい果物のテーブル(または静的な)リストをどうにかしています。 –

答えて

1

あなたはこのような何かを行うことができます。私はハイブにあまり精通していませんが、このテクニックは、さまざまなプラットフォームで動作するはずです:

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 
関連する問題