有一個表,結構如下日期   datetime,
單據號 nvarchar(50),
收入   money,
支出   money我現在想根據這個表的收入和支出情況,按日期從小到大計算出 每一筆記錄 後的結余,用游標可以實現,但系統開消比較大,需一條條讀數據然後再計算才得出結果,請問各位高手是否有比用游標更有效率的辦法呢?

解决方案 »

  1.   

    本帖最后由 libin_ftsafe 于 2008-06-25 08:59:50 编辑
      

  2.   

    GROUP BY 就可以了吧
    你试下
      

  3.   

    这个可以不是用游标的。论坛里面有这样的帖子。
    http://topic.csdn.net/u/20080618/09/ca4d1144-8087-4d2c-b76f-0c64d546b205.html
    和你的问题相类似
      

  4.   


    是截止到这个笔的結余:
    select *,(select sum(收入-支出) from 表 where 日期<=a.日期) as 結余
    from 表 as a order by 日期还是每一笔的結余:
    select *,收入-支出 as 結余 from 表 order by 日期
      

  5.   

    --将数据去空值,并且按日期排序后,存入临时表
    select 日期,isnull(收入,0) as 收入,isnull(支出,0) as 支出,0 as 结余 into #tmp from table1 order by 日期--计算结余
    declare @结余 money
    set @结余=0
    update #tmp set @结余=@结余+isnull(收入,0)-isnull(支出,0),结余=@结余--查询记录
    select * from #tmp
    drop table #tmp