循环相减
create table test1(code bigint not null,enddate datetime not null,value numeric(10,4))
insert into test1(code,enddate,value)values('1001','2008-10-1',5200)
insert into test1(code,enddate,value)values('1001','2008-10-18',6200)
insert into test1(code,enddate,value)values('1001','2008-11-1',5200)
insert into test1(code,enddate,value)values('1002','2008-10-18',6200)
select a.code,a.enddate,a.value, b.value-isnull(a.value,0) as cc
from (select ROW=ROW_NUMBER()over(partition by code order by value desc),* from test1)a
left join (select ROW=ROW_NUMBER()over(partition by code order by value desc)+1,* from test1 ) b
on a.code=b.code and a.ROW=b.ROW
10012008-10-18 00:00:00.0006200.0000NULL
10012008-11-01 00:00:00.0005200.00001000.0000
10012008-10-01 00:00:00.0005200.00000.0000
10022008-10-18 00:00:00.0006200.0000NULL
我想得到这样的结果
10012008-10-18 00:00:00.0006200.00006200
10012008-11-01 00:00:00.0005200.00001000.0000
10012008-10-01 00:00:00.0005200.00000.0000
10022008-10-18 00:00:00.0006200.00006200
[解决办法]
abs(isnull(a.value)-isnull(b.value))
循环相减解决思路
循环相减create table test1(code bigint not null,enddate datetime not null,value numeric(10,4))inser
