现有表Test结构与记录如下 A  B  C
---------
 2  3  
 4  5现在想要实现的结果是: A  B  C
---------
 2  3  -1
 4  5  -2其实就是A减B放入C ,然后将当前记录的C结果再加上下一条记录的A,再减B.
(C=C+A-B) 
如何用Sql做到?望赐教.

解决方案 »

  1.   

    如果a是由小到大排序的话可以这样,如果不是的话要加个行号才行
    select 
      *,
      (select sum(a)-sum(b) from test where a<=t.a) as C
    from
      Test t
      

  2.   

    表Test 你需要有一个排序用字段,否则难以实现。通过 这个排序字段,你可以用一楼的语句实现。select 
      *,
      (select sum(a)-sum(b) from test where 排序用字段<=t.排序用字段) as C
    from
      Test t
      

  3.   

    mysql> select * from taa;
    +------+-------+--------+
    | year | month | amount |
    +------+-------+--------+
    | 1991 | 1     |    1.1 |
    | 1991 | 2     |    1.2 |
    | 1991 | 3     |    1.3 |
    | 1991 | 4     |    1.4 |
    | 1992 | 1     |    2.1 |
    | 1992 | 2     |    2.2 |
    | 1992 | 3     |    2.3 |
    | 1992 | 4     |    2.4 |
    +------+-------+--------+
    8 rows in set (0.00 sec)mysql> select taa.*,sum(t.s) from taa,(select *,(year-month) s from taa) t where taa.amount>=t.amount  group by taa.amount;
    +------+-------+--------+----------+
    | year | month | amount | sum(t.s) |
    +------+-------+--------+----------+
    | 1991 | 1     |    1.1 |     1990 |
    | 1991 | 2     |    1.2 |     3979 |
    | 1991 | 3     |    1.3 |     5967 |
    | 1991 | 4     |    1.4 |     7954 |
    | 1992 | 1     |    2.1 |     9945 |
    | 1992 | 2     |    2.2 |    11935 |
    | 1992 | 3     |    2.3 |    13924 |
    | 1992 | 4     |    2.4 |    15912 |
    +------+-------+--------+----------+
    8 rows in set (0.00 sec)