数据库表查出来如下 :
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急急!
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急急!
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 行)
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 行)*/
FID
,发货金额
,收款金额
,还欠金额 = (select 还欠金额 from 表 where fid = 1) +
(select sum(isnull(发货金额,0) - isnull(收款金额,0)) from 表 where fid <= t.fid)
from
表 t