一般我们在做这样的结果时,经常用SQL语句加临时表做,因为你这个可以按日期排序,而我们经常做的排序很复杂。<br><br>假定查询的时间段为日期1至日期2之间。<br><br>语句:<br><br>1、生成临时表:<br><br>select indentify(int,1,1) id,* into 临时表1 from(<br>select top 100 percent * from(<br>select 1 显示顺序,日期1 日期,'期初余额' 摘要,sum(收入) 收入,sum(支出) 支出 from 表 where 日期<日期1<br>union all<br>select 2 显示顺序,日期,'销售',收入,null from 表 where 收入>0<br>union all<br>select 2 显示顺序,日期,'销售',null,支出 from 表 where 支出>0<br>union all<br>select 3 显示顺序,null 日期,'本期结存' 摘要,null 收入,null 支出<br>order by 显示顺序,日期)aa)bb<br><br>2、生成结果:<br><br>select a.*,d.结余 into 临时表2 from 临时表1 a left join (select b.id,sum(isnull(c.收入,0)-isnull(c.支出,0))结余 from 临时表1 b left join 临时表1 c on b.id>=c.id) d on a.id=d.id<br><br>3、将期初和期未收入与支出清空:<br><br>update 临时表2 set 收入=null,支出=null where 摘要='期初余额' or 摘要='本期结存'