give you a example :
use sql
CREATE PROCEDURE reports
AS
declare @temps1 char(10)
declare @temps2 int
declare @temps3 decimal(8,2)
declare @temps4 decimal(8,2)
declare cs01 cursor for
select dept ,type ,sum(rmb) ,sum(hkd)
from pcps
group by dept ,type
open cs01
fetch next from cs01 into @temps1 ,@temps2 ,@temps3, @temps4
while @@fetch_status=0
begin
if @temps2=1
begin
if @temps1 in (select distinct dept from psal)
update psal set rmb1=@temps3 ,hkd1=@temps4,rmb=@temps3+rmb2+rmb3 ,hkd=@temps4+hkd2+hkd3 where dept=@temps1
else
insert psal (dept ,rmb1,rmb2 ,rmb3,hkd1,hkd2,hkd3,rmb,hkd)
values (@temps1 ,@temps3,0,0,@temps4,0,0,@temps3,@temps4)
end
if @temps2=2
begin
if @temps1 in (select distinct dept from psal)
update psal set rmb2=@temps3 , hkd2=@temps4,rmb=rmb1+@temps3+rmb3 ,hkd=@temps4+hkd1+hkd3 where dept=@temps1
else
insert psal (dept ,rmb1,rmb2 ,rmb3,hkd1,hkd2,hkd3,rmb,hkd )
values (@temps1,0,@temps3,0,0,@temps4,0,@temps3,@temps4)
end
if @temps2=3
begin
if @temps1 in (select distinct dept from psal)
update psal set rmb3=@temps3 , hkd3=@temps4,rmb=rmb1+rmb2+@temps1,hkd=hkd1+hkd2+@temps4 where dept=@temps1
else
insert psal (dept ,rmb1,rmb2 ,rmb3,hkd1,hkd2,hkd3,rmb,hkd)
values (@temps1,0,0,@temps3,0,0,@temps4,@temps3,@temps4)
end
fetch next from cs01 into @temps1 ,@temps2 ,@temps3, @temps4
end
close cs01
deallocate cs01
GO