2012-11-26 53 views
1

我有SQL表基于另一个行值显示金额的总和

id_details 
year-month 
type (only have 2 values , income and outcome) 
amount 

和表有一行这样

(year-month)  (type)  (amount) 
November-2012 income  50000 
November-2012 income  30000 
December-2012 income  20000 
November-2012 outcome  10000 
December-2012 outcome  50000 
December-2012 income  10000 

我要的是,呈现出这样

结果查询
(year-month) (sum income)  (sum-outcome) (sub-total balance) 
November-2012 80000    10000   70000 
December-2012 30000    50000   -20000 

终于

total-balance = 50000 

我该怎么做? 或者你可以给我推荐更好的表设计

回答

1
SELECT `year-month`, 
     SUM(CASE WHEN type = 'income' THEN amount ELSE 0 END) `sum-income`, 
     SUM(CASE WHEN type = 'outcome' THEN amount ELSE 0 END) `sum-outcome`, 
     SUM(amount) `sum-total balance` 
FROM <JOINS> 
GROUP BY `year-month` 
+0

作品般的魅力,谢谢你救了我的命 – user1843843

+0

没问题。该SUM/CASE组合可能非常有用。 – Tom