2016-01-27 31 views
0

我想檢索day(dateAndTime),SUM(amount)group by day(dateAndTime)但當類型是「撤回」時,金額將被減去而不是添加。我如何實現這一目標?如何檢索依​​賴於另一列從mysql的一列的總數

我的查詢現在:

select day(dayAndTime),SUM(amount) from table group by day(dayAndTime) 

id | username | type  | amount  | dateAndTime 
    |    |    |    | 
1 | user1  | withdraw |  10  | 2016-01-27 03:35:07 
2 | user2  | deposit |  20  | 2016-01-27 03:35:07 
3 | user1  | deposit |  40  | 2016-01-27 03:35:07 
4 | user2  | withdraw |  20  | 2016-01-27 03:35:07  
+2

'..SUM(CASE WHEN類型=」存款'那麼金額ELSE - 金額結束)..' – Mihai

回答

0

你應該用一個case語句是這樣工作的:

select day(dateAndTime),SUM(CASE WHEN type='deposit' THEN amount ELSE -amount END) 
from table1 group by day(dateAndTime) 

你可以測試它here


別忘了你在查詢中所做的一個錯字

dayAndTime 

應該

dateAndTime 
0

退房case

SELECT dateAndTime, SUM(amount) 
FROM (
    SELECT dateAndTime, 
    CASE type 
     WHEN 'withdraw' THEN amount * -1 
     WHEN 'deposit' THEN amount 
    END as amount 
    FROM table 
) 
GROUP BY DAY(dateAndTime)