数据库表查出来如下 :
FID  发货金额    收款金额     还欠金额 
1    NULL NULL    1000.00
2    34600.00 NULL    NULL
3    1600.00 NULL    NULL
4    2000.00 NULL    NULL
5    NULL 10000.00   NULL
我怎么通过sql语句得到我要的报表
如下
FID  发货金额    收款金额     还欠金额 
1    NULL NULL    1000.00
2    34600.00 NULL    35600.00
3    1600.00 NULL    37200.00
4    2000.00 NULL    39200.00
5    NULL 10000.00   29200.00急急!

解决方案 »

  1.   

    declare @ table(FID int,  发货金额  dec(18,2),  收款金额 dec(18,2),  还欠金额 dec(18,2))
    insert @ select 1 ,   NULL ,NULL   ,1000.00 
    insert @ select 2 ,   34600.00, NULL   ,NULL 
    insert @ select 3 ,   1600.00, NULL   ,NULL 
    insert @ select 4 ,   2000.00, NULL  , NULL 
    insert @ select 5 ,   NULL ,10000.00,  NULL select *,
       累计还欠金额 = (select sum(isnull(发货金额,0)) from @ where fid<=t.fid) -
                     (select sum(isnull(收款金额,0)) from @ where fid<=t.fid) +
                     (select sum(isnull(还欠金额,0)) from @ where fid<=t.fid)
    from @ tFID         发货金额                 收款金额                 还欠金额                 累计还欠金额                                   
    ----------- -------------------- -------------------- -------------------- ---------------------------------------- 
    1           NULL                 NULL                 1000.00              1000.00
    2           34600.00             NULL                 NULL                 35600.00
    3           1600.00              NULL                 NULL                 37200.00
    4           2000.00              NULL                 NULL                 39200.00
    5           NULL                 10000.00             NULL                 29200.00(所影响的行数为 5 行)
      

  2.   

    create table tb(FID int, 发货金额  int, 收款金额  int,  还欠金额 int) 
    insert into tb values(1  ,  NULL    , NULL     ,1000.00 )
    insert into tb values(2  ,  34600.00, NULL     ,NULL )
    insert into tb values(3  ,  1600.00 , NULL     ,NULL )
    insert into tb values(4  ,  2000.00 , NULL     ,NULL )
    insert into tb values(5  ,  NULL    , 10000.00 ,NULL )
    go
    select FID , 
           发货金额  , 
           收款金额  ,  
           还欠金额 = (select top 1 还欠金额 from tb order by fid) +
                      (select sum(isnull(发货金额,0) - isnull(收款金额,0)) from tb where fid <= t.fid)
    from tb tdrop table tb/*
    FID         发货金额        收款金额        还欠金额        
    ----------- ----------- ----------- ----------- 
    1           NULL        NULL        1000
    2           34600       NULL        35600
    3           1600        NULL        37200
    4           2000        NULL        39200
    5           NULL        10000       29200(所影响的行数为 5 行)*/
      

  3.   

    select 
      FID 
      ,发货金额 
      ,收款金额 
      ,还欠金额 = (select 还欠金额 from 表 where fid = 1) +
                      (select sum(isnull(发货金额,0) - isnull(收款金额,0)) from 表 where fid <= t.fid)
    from 
      表 t