--数据准备
create table tmp (invoiceno int, money decimal(28,8))
insert tmp values ('1','2000')
insert tmp values ('1','3000')
insert tmp values ('2','600')
insert tmp values ('2','400')
insert tmp values ('1','4000')
select *
from tmp
--存储过程
create proc sp_temp
as
declare @temp table(
invoiceno int,
paymoney varchar(100),
[money] decimal(28,8))
declare @invoiceno int,
@money decimal(28,8)
declare CurTree CurSor for select invoiceno, [money] from tmp order by invoiceno
open CurTree
fetch from CurTree into @invoiceno, @money
while @@fetch_status = 0
begin
if (select count(*) from @temp where invoiceno = @invoiceno)>0
begin
update @temp set [money] = @money + [money], paymoney = paymoney +'+'+convert(varchar,@money)
where invoiceno = @invoiceno
end
else
insert @temp
values (@invoiceno,convert(varchar,@money), @money)
fetch next from CurTree into @invoiceno, @money
end
close CurTree
deallocate CurTree
select *
from @temp