我现在一张表里有这样的数据:
dATE          W_Amount        M_Remain
2003-09           0          0
2003-10           1          2
2003-11  4          5
2003-12            5          8
2004-01  8          22
我需要求每一条记录与上一条记录的差作为一条记录;就是这样我先取得这样得数据:
dATE          W_Amount        M_Remain
2003-10           1              2
2003-11           3              3
2003-12           1              3
2004-01 3      14
各位高手,我能实现吗?

解决方案 »

  1.   

    这样可以吧。先给记录排序加个字段,不能间断
    dATE          W_Amount        M_Remain        OrderField
    2003-09           0          0            1
    2003-10           1          2            2
    2003-11  4          5            3
    2003-12            5          8            4
    2004-01  8          22           5
    其中OrderField(1、2、3、4、5不能间断)
    select dATE,
    W_Amount=(select a.W_Amount-b.W_Amount from tbl b where b.OrderField=a.OrderField-1 ),
    M_Remain=(select a.M_Remain-c.M_Remain from tbl c where c.OrderField=a.OrderField-1 )  
     from tbl a    where a.  OrderField   >1 
      

  2.   

    当然,在此基础上可以不用加字段也可以,但是得保证有个字段是排序的比如DATE ,原理是使用TOP 1语法。
    自己琢磨吧,不明白再问给分吧?
      

  3.   

    可以实现的,编程序实现,很简单的,只要将原来的记录取出来,按照条件从记录集的第二条开始,相对应的相减,,前提是按照date排序!