表名 user
字段     类型
id        int    自增长
name      varchar表名 expense
字段     类型
id        int    自增长
amount    decimal(10,2)
expenseDate datetime
user_id   int    外键关联user表 id表名 income
字段     类型
id        int    自增长
amount    decimal(10,2)
incomeDate datetime
user_id   int    外键关联user表 id
如何写一条sql统计某人半年,按月分组的收支情况。
如当前为8月,
则应当显示如下信息
年月        收入        支出
2011-03     xxx          xxx
2011-04     xxx          xxx
2011-05     xxx          xxx
2011-06     xxx          xxx
2011-07     xxx          xxx
2011-08     xxx          xxx

解决方案 »

  1.   

    Select format_date(d,’%Y-%m’),sum(i),sum(e)
    From (
    Select user_id   , amount as e , 0 as i,expenseDate as d   from  expense, user where expense user_id  = user. user_id   and name  = ‘某人’  and expenseDate>curdate()-interval 6 month
    Union all
    Select user_id   , 0 as e , amount as i, incomeDate as d   from  income , user where income user_id  = user. user_id   and name  = ‘某人’  and incomeDate >curdate()-interval 6 month
    ) t
    Group by format_date(d,’%Y-%m’)