--tanımlamalar
Declare @INO int

Declare @tb table(
  HarNo int,
  IslemNo2 int
)

-- Kasa da olupda Visa da veya Banka da olmayan kayıtları al...
insert into @tb (HarNo)
(
select HARNO from KASA 
where ISLEMNO not in (
	select ISLEMNO from Visa V
	union all 
	select ISLEMNO from BANKA) 
  and  BAACIKLA = 'Pos Çıkış'
)

Declare @hno int
set @hno=1

-- her islemno2 alanına yeni islemno al...
while @hno>0
  begin
     set @hno=0
     select top 1 @hno = HarNo from @tb where IslemNo2 is null
	 if @hno>0
	   begin
		 update ADIGSABITLER set ISLEMNO=ISLEMNO+2
		 select @INO=ISLEMNO from ADIGSABITLER 
		 update @tb set IslemNo2 = @INO where HarNo = @hno
	   end
  end

--Kasa tablosunu güncelle
update ks
set  
  ks.IslemNo2 = t.IslemNo2
from KASA ks
inner join @tb t on ks.HARNO = t.HarNo

--güncellenen değerleri visa tablosuna yaz
insert into Visa (BORC, ALACAK, ACIKLAMA, BANKAKODU, BANKADI, MUSNO, MUSADI, TARIH, BA, BAACIKLA, SUBE, HESAPNO, KESCEK, 
BORDRONO, TAHSILCEK, TAHSILSENET, ISLEMNO, 
                         ISLEMNO2, MusKod, DovizTut, DovizCinsi, DovizKodu, KULNO, KULADI, Departman, KasaKodu)
select ALACAK as borc,BORC as alacak,ACIKLAMA,'' as bankakodu,Bankasi as bankaadi,MUSNO,MUSADI,TARIH,BA,BAACIKLA,
Subesi as sube,HesapNo as hesapno,
0 as kescek,0 as bordrono,0 as tahsilcek , 0 as tahsilsenet,ISLEMNO,IslemNo2, MUSKOD,DovizTut,DovizCinsi,DovizKodu,
KULNO,KULADI,Departman,KASAKODU 
 from (
select K.*,T.Bankasi,T.Subesi,T.HesapNo       from KASA K, KASAT T
where K.ISLEMNO not in (
	select ISLEMNO from Visa V
	union all 
	select ISLEMNO from BANKA) 
and  K.BAACIKLA = 'Pos Çıkış'
and K.KASAKODU = T.KASAKODU 
)X