循环相减
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
1001	2008-10-18 00:00:00.000	6200.0000	NULL
1001	2008-11-01 00:00:00.000	5200.0000	1000.0000
1001	2008-10-01 00:00:00.000	5200.0000	0.0000
1002	2008-10-18 00:00:00.000	6200.0000	NULL
我想得到这样的结果
1001	2008-10-18 00:00:00.000	6200.0000	6200
1001	2008-11-01 00:00:00.000	5200.0000	1000.0000
1001	2008-10-01 00:00:00.000	5200.0000	0.0000
1002	2008-10-18 00:00:00.000	6200.0000	6200
------解决方案--------------------abs(isnull(a.value)-isnull(b.value))