2016-11-21 65 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 

但我不能想出如何去包括那些討厭的梨。

+2

在哪個表中您有存儲的水果列表? –

+0

檢查使用'完全左連接'。 – FDavidov

+1

AS @Prdp說,「original_table」無法知道,你想要梨,所以你有某種方式想要包含在列表中的表(或靜態)列表。 –

回答

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 

如果沒有水果,這時你需要做一個。我不太熟悉配置單元,但這種技術應該可以在很多不同的平臺上工作:

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