您不是用PB吗,PB中有cumulativeSum这个东西可以实现(数据窗口的计算列)

解决方案 »

  1.   

    select field1,field2,field3,
        (select sum(field2)-sum(field3)  
         from mytable t1
         where t1.field1<=t2.field1)-field2-field3
    from mytable t2
    order by field1
      

  2.   

    建临时表,
    declare @value numeric(11,2)
    set @value = 0update 临时表
    set field4 = @value,
        @value = field2+@value-field3
      

  3.   

    错了一点。建临时表,
    declare @value numeric(11,2)
    declare @v numeric(11,2)
    set @value = 0update 临时表
    set @v = @value,
        @value = field2+@value-field3,
        field4 = @value
      

  4.   

    zqllyh(您问我也问总可以问出个所以然) :
       呵呵,我没用过PB这不是一个工作上的问题,是别人的一个数据表,已经在前端解决了,不过我好奇,想知道用SQL语句可不可以只用select写出来:)按钮J的结果也不行:)
      

  5.   

    哦,写错了点:
    select field1,field2,field3,
        (select sum(field2)-sum(field3)  
         from mytable t1
         where t1.field1<=t2.field1)-field2+field3  --应该是加上field3
    from mytable t2
    order by field1
    这回应该对了。
      

  6.   

    大概思路是这样:(我没调试你改改就能用)
    select identity(int,1,1) tempid,*,field4=null into #tt from 表
    update #tt set field4=A.field2+B.field2-B.field3 from #tt A join #tt B on A.tempid=B.tempid-1
      

  7.   

    嗯,差不多了,与题意稍有不符:)
    得到的是:
    1 2.3 4.5 .0
    2 2.3 3.4 -2.2
    3 3.4 4.5 -3.3
    4 4.5 5.6 -4.4
    5 5.6 6.7 -5.5改成:
    select field1,field2,field3,
        isnull((select sum(field2)-sum(field3)  
         from t1
         where t1.field1<t2.field1)-field2+field3,0)  --应该是加上field3
    from t1 t2
    order by field1就可以了.高手啊就是高手,谢谢按钮J^-^
      

  8.   

    一句估计不行!?
    因为 field4 不是仅根据 其他字段算得!还有  field4 上一条!
      

  9.   

    select *,
          (select sum(f2)-sum(f3)  
             from tab
            where tab.f1 < t.f1) 
              - t.f2 + t.f3
    from tab t
    order by t.f1
      

  10.   

    比如数据为:
    1 2.3 4.5
    2 2.3 3.4
    3 3.4 4.5
    4 4.5 5.6
    5 5.6 6.7
    6 5.9 9.7   --新加的按钮与干部的结果都为:
    1 2.3 4.5 NULL
    2 2.3 3.4 -1.1
    3 3.4 4.5 -2.2
    4 4.5 5.6 -3.3
    5 5.6 6.7 -4.4
    6 5.9 9.7 -2.8  //这项不对,应该是-8.2
      

  11.   

    领会错了你的意思,以为只是简单的求余额呢。改改:
    select field1,field2,field3,
        isnull((select sum(field2)-sum(field3)  
         from mytable t1
         where t1.field1<=t2.field1 
         and t1.field1<>(select min(field1) from mytable)),0)
    from mytable t2
    order by field1
      

  12.   

    按钮姐的方法是最好理解的。不过里面还有一个小错误。
    这是我算动态库存的程序。
    create table #a(id int,rksl int,cksl int)
    go
    insert #a(id,rksl,cksl) values(1,2.3,3.4)
    insert #a(id,rksl,cksl) values(2,3.4,4.5)
    insert #a(id,rksl,cksl) values(4,4.5,5.6)
    insert #a(id,rksl,cksl) values(5,5.6,6.7)
    insert #a(id,rksl,cksl) values(6,5.9,9.7)select b.id,b.rksl,b.cksl,(select sum(rksl-cksl) from #a a
         where a.id<b.id and a.id>1)+b.rksl-b.cksl  --应该是加上field3
    from #a b
    order by b.id
    第二条记录,位置不好。