2013-09-29 20 views
1

我正在寫一個小財政計劃,以我自己和我被困白衣這個小問題在這裏:)Mysql的SUM函數有一個IF語句

我存儲我的收益,以兩個不同的貨幣(美元,歐元)。 基本上我想要做一個SELECT查詢,它將返回歐元收據的總金額。

SELECT SUM(IF(type='euro',amount,amount*value)) FROM receipt 

我到目前爲止發現,上面的這個查詢不會經過表的每一行。它只是爲我總結第二個陳述。

任何幫助,非常感謝。

+0

什麼你的意思是「*它只是總結第二個陳述*」?你能提供一個更具體的例子嗎?例如,一些示例數據和輸出。也許在http://sqlfiddle.com? – eggyal

回答

0
SELECT SUM(SELECT amount FROM receipt WHERE type='euro') AS euro_amount, SUM(SELECT amount FROM receipt WHERE type='usd') AS usd_amount FROM receipt 

你不能寫一個字段的總和,如果條件下,你可以,如果你想使用單查詢結果,嘗試上述子查詢

+0

對不起,但這個答案完全不正確。 SUM(IF())'完全有效。 -1 – eggyal

+0

eggyal我剛剛從問題的角度說「你不能」,它可能是可能的,但首先我們需要看到他的場景的實際視圖,我是對嗎?@eggyal – Sabbir

+0

嗯,在我看來,查詢OP正在使用應該工作正常:請參閱[sqlfiddle](http://sqlfiddle.com/#!2/206a0/1/0)。 *他的情景的實際觀點*「可能很好地幫助確定爲什麼它不適用於OP,但不應該是絕對必要的。 – eggyal

0

如何:

select 
    (select sum(amount) from receipt where type='euro') + 
    (select sum(amount)*value from receipt where type != 'euro') 
+0

請注意,這將完全排除任何類型爲空的收據。 – eggyal

+0

@eggyal爲什麼你認爲類型可以爲null? – Nailgun

+0

我沒有任何相反的信息。你做? – eggyal