2017-05-16 168 views
2

我想從1表中運行一個SQL查詢,我希望每個結果列中的數據基於不同的where子句。SQL查詢列名基於where子句

例子:

我有所謂的類型,大小柱,國家

值類型包括電子郵件和短信的表稱爲消息。

大小的值是整數。

我想創建一個有3列的視圖:country,sms,email。然後,我想顯示每個國家/地區的電子郵件和短信的大小總和。

我想我需要一個where子句的列標題,但我不知道如何做到這一點。

我試着這樣做:

select country, sum(size) 
where type = 'sms' as "SMS", sum(size) 
where type = 'email' as "Email" 
from messages table 
group by country 

我希望的就是我試圖完成的邏輯是清楚的。我無法弄清楚語法。有人可以幫忙嗎?謝謝!

注意:db是postgressql。

回答

2

可以使用條件與聚集表達式case像這樣:

select 
    country 
    , sum(case when type='email' then size else 0 end) as email 
    , sum(case when type='sms' then size else 0 end) as sms 
from messages 
group by country 
+0

謝謝。解決了我的問題! – Jacob

+0

@Jacob樂意幫忙! – SqlZim