create procedure [dbo].[_Brk_Mutabakat_CariBaBsBirMuhasebe](@SUBEKODU int,@ilkTarih DATETIME, @sonTarih DATETIME,@limit FLOAT) as 
begin 
select * from 
(
select 
distinct 
IncKeyNo = (select temp.IncKeyNo where temp.Rank=1),
OlusturmaTarihi = (select temp.OlusturmaTarihi where temp.Rank=1),
VergiNo = (select temp.VergiNo where temp.Rank=1),
VergiDairesi = (select temp.VergiDairesi where temp.Rank=1),
CariKodu = (select temp.CariKodu where temp.Rank=1),
Unvani = (select temp.Unvani where temp.Rank=1),
CariIl = (select temp.CariIl where temp.Rank=1),
CariIlce = (select temp.CariIlce where temp.Rank=1),
CariAdresi = (select temp.CariAdresi where temp.Rank=1),
GrupKodu = (select temp.GrupKodu where temp.Rank=1),
Kod1 = (select temp.Kod1 where temp.Rank=1),
Kod2 = (select temp.Kod2 where temp.Rank=1),
Kod3 = (select temp.Kod3 where temp.Rank=1),
Kod4 = (select temp.Kod4 where temp.Rank=1),
Kod5 = (select temp.Kod5 where temp.Rank=1),
Telefon = (select temp.Telefon where temp.Rank=1),
Faks = (select temp.Faks where temp.Rank=1),
CariTipi = (select temp.CariTipi where temp.Rank=1),
BaBelgeSayisi = toplamlar.BaSAYI,
BaTutar = toplamlar.BaTutar,
BsBelgeSayisi = toplamlar.BsSAYI,
BsTutar = toplamlar.BsTutar
from
(
select 
RANK() OVER (PARTITION BY (CASE WHEN ISNULL(b.VERGI_NUMARASI,'')='' THEN b.TCKIMLIKNO ELSE b.VERGI_NUMARASI END) ORDER BY b.CARI_KOD,b.FTIRSIP) AS Rank,
IncKeyNo = NULL, 
OlusturmaTarihi = GETDATE(), 
VergiNo = (CASE WHEN ISNULL(b.VERGI_NUMARASI,'')='' THEN b.TCKIMLIKNO ELSE b.VERGI_NUMARASI END), 
VergiDairesi = (select dbo.trk(TBLCASABIT.VERGI_DAIRESI) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
CariKodu = dbo.trk(b.CARI_KOD), 
Unvani = dbo.trk(b.CARI_ISIM), 
CariIl = (select dbo.trk(TBLCASABIT.CARI_IL) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
CariIlce = (select dbo.trk(TBLCASABIT.CARI_ILCE) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
CariAdresi = (select dbo.trk(TBLCASABIT.CARI_ADRES) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
GrupKodu = (select top(1)dbo.trk(TBLCASABIT.GRUP_KODU) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
Kod1 = (select dbo.trk(TBLCASABIT.RAPOR_KODU1) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
Kod2 = (select dbo.trk(TBLCASABIT.RAPOR_KODU2) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
Kod3 = (select dbo.trk(TBLCASABIT.RAPOR_KODU3) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
Kod4 = (select dbo.trk(TBLCASABIT.RAPOR_KODU4) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
Kod5 = (select dbo.trk(TBLCASABIT.RAPOR_KODU5) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
Telefon = (select dbo.trk(TBLCASABIT.CARI_TEL) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
Faks = (select dbo.trk(TBLCASABIT.FAX) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
CariTipi = (select dbo.trk(TBLCASABIT.CARI_TIP) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
BaSAYI = case when b.FTIRSIP=2 then b.SAYI else 0 end, 
BaTutar = case when b.FTIRSIP=2 then b.TUTAR else 0 end, 
BsSAYI = case when b.FTIRSIP=1 then b.SAYI else 0 end, 
BsTutar = case when b.FTIRSIP=1 then b.TUTAR else 0 end 
from dbo._Brk_Mutabakat_BaBs_Liste(@ilkTarih, @sonTarih, (SELECT TOP 1 TBLSUBELER.ISLETME_KODU FROM TBLSUBELER WITH(NOLOCK) WHERE TBLSUBELER.SUBE_KODU = @SUBEKODU), @limit) b 
where 
b.VERGI_NUMARASI <> '-1' 
and b.TCKIMLIKNO <> '-1' 
and b.SAYI <> '-1' 
) as temp 
inner join
(
select 
temp.VergiNo,
SUM(temp.BaSAYI) as BaSAYI,
SUM(temp.BaTutar) as BaTutar,
SUM(temp.BsSAYI) as BsSAYI,
SUM(temp.BsTutar) as BsTutar
from
(
select 
RANK() OVER (PARTITION BY (CASE WHEN ISNULL(b.VERGI_NUMARASI,'')='' THEN b.TCKIMLIKNO ELSE b.VERGI_NUMARASI END) ORDER BY b.CARI_KOD,b.FTIRSIP) AS Rank,
IncKeyNo = NULL, 
OlusturmaTarihi = GETDATE(), 
VergiNo = (CASE WHEN ISNULL(b.VERGI_NUMARASI,'')='' THEN b.TCKIMLIKNO ELSE b.VERGI_NUMARASI END), 
VergiDairesi = (select dbo.trk(TBLCASABIT.VERGI_DAIRESI) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
CariKodu = dbo.trk(b.CARI_KOD), 
Unvani = dbo.trk(b.CARI_ISIM), 
CariIl = (select dbo.trk(TBLCASABIT.CARI_IL) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD),
CariIlce = (select dbo.trk(TBLCASABIT.CARI_ILCE) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD),
CariAdresi = (select dbo.trk(TBLCASABIT.CARI_ADRES) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
GrupKodu = (select top(1)dbo.trk(TBLCASABIT.GRUP_KODU) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
Kod1 = (select dbo.trk(TBLCASABIT.RAPOR_KODU1) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
Kod2 = (select dbo.trk(TBLCASABIT.RAPOR_KODU2) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
Kod3 = (select dbo.trk(TBLCASABIT.RAPOR_KODU3) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
Kod4 = (select dbo.trk(TBLCASABIT.RAPOR_KODU4) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
Kod5 = (select dbo.trk(TBLCASABIT.RAPOR_KODU5) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
CariTipi = (select dbo.trk(TBLCASABIT.CARI_TIP) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
Telefon = (select dbo.trk(TBLCASABIT.CARI_TEL) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
Faks = (select dbo.trk(TBLCASABIT.FAX) from TBLCASABIT WITH(NOLOCK) where b.CARI_KOD = TBLCASABIT.CARI_KOD), 
BaSAYI = case when b.FTIRSIP=2 then b.SAYI else 0 end, 
BaTutar = case when b.FTIRSIP=2 then b.TUTAR else 0 end, 
BsSAYI = case when b.FTIRSIP=1 then b.SAYI else 0 end, 
BsTutar = case when b.FTIRSIP=1 then b.TUTAR else 0 end 
from dbo._Brk_Mutabakat_BaBs_Liste(@ilkTarih, @sonTarih, (SELECT TOP 1 TBLSUBELER.ISLETME_KODU FROM TBLSUBELER WITH(NOLOCK) WHERE TBLSUBELER.SUBE_KODU = @SUBEKODU), @limit) b 
where 
b.VERGI_NUMARASI <> '-1' 
and b.TCKIMLIKNO <> '-1' 
and b.SAYI <> '-1' 
) as temp
group by VergiNo
)
toplamlar on toplamlar.VergiNo = temp.VergiNo
) as son
where son.CariKodu is not null
end