2013-09-21 45 views
1
user1 90 add 
user2 60 remove 
user3 70 remove 
user2 80 remove 
user2 80 remove 
user1 70 remove 
user3 20 add 
user4 10 add 

我需要sql查詢來獲取每個用戶的總數。在這種情況下user1 i should get 20每個不同名稱的總數量

user4 --> 10 
user3 --> -50 

我曾嘗試:

SELECT description, SUM(money) FROM jabeda GROUP BY description 

如何做到這一點?

+1

SELECT description,SUM(money) FROM'jabeda' GROUP BY description – LynAs

+0

該代碼取自實際表 – LynAs

+0

'user3'應該是'90'。對? –

回答

5
SELECT col1, 
     SUM(CASE WHEN col3 = 'add' THEN col2 ELSE col2 * -1 END) TOtals 
FROM tableName 
GROUP BY col1 

我不知道你的列名,但肯定的查詢會幫助你。 Col1這是user的名稱。 Col2是金額,而Col3是一些什麼樣的動作類型。

查詢所做的是檢查類型是否爲addremove。當碰巧是remove時,該值乘以-1以取消該值。

+0

稍微更緊湊的版本:'SELECT col1,SUM(col2 * IF(col3 ='add',1,-1))AS總計FROM tableName GROUP BY col1' – neubert

+0

@neubert yep緊湊版本,但它是供應商特定的。 CASE將主要用於任何其他RDBMS。 –

+0

即使有'case'我會寫'col2 * case col3'時'add'然後1'當'刪除'然後-1結束'時寫這個 - 所以我不會重複col2 –