2014-05-12 64 views
0

我有兩列,分別叫做valuetype。我想總結我的表中的所有值,但是當類型是'alpha'我想添加它們,並且當類型爲'beta'時,我想將它們相減。假設這個類型是一個varchar,並且值是一個數字類型,我該怎麼做?是否有內置的功能,或者我需要定義我自己的?MySQL根據列類型的列總和值列

+0

職位表和期望的結果 –

回答

1

這似乎工作。請注意,我使用列名稱theValuetheType而不是valuetype

SELECT SUM(IF(theType = 'alpha', theValue, 0)) - SUM(IF(theType = 'beta', theValue, 0)) AS theNetResult 
FROM mytable; 

DEMO

+0

巧妙地利用總和。謝謝! – Kvass

+0

如何將其作爲一個函數來表達,所以只需要總數而不是每次輸入時都只需要使用'getTotal()'這樣的東西呢? (對不起,我沒有太多的SQL經驗) – Kvass

+0

@Kvass您可以創建一個調用此SQL語句並返回結果的代碼內函數,也可以查看[存儲過程和函數](http:// dev.mysql.com/doc/refman/5.0/en/create-procedure.html)。但是,究竟如何做這兩個問題超出了這個問題的範圍。 –

0

這是另一種方式做同樣的

SELECT SUM(IF(theType = 'alpha', theValue,(theValue*-1))) AS NetResult 
FROM mytable;