create procedure [dbo].[_Brk_Mutabakat_CariBaBs](@SUBEKODU int) 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.BaBelgeSayisi,
BaTutar = toplamlar.BaTutar,
BsBelgeSayisi = toplamlar.BsBelgeSayisi,
BsTutar = toplamlar.BsTutar
from
(
select 
RANK() OVER (PARTITION BY (CASE WHEN ISNULL(TBLBFORMU.VERGINUMARASI,'')='' THEN TBLBFORMU.TCKIMLIKNO ELSE TBLBFORMU.VERGINUMARASI END) ORDER BY TBLBFORMU.INCKEYNO) AS Rank,
IncKeyNo = TBLBFORMU.INCKEYNO, 
OlusturmaTarihi = TBLBFORMU.KAYITTARIHI, 
VergiNo = (CASE WHEN ISNULL(TBLBFORMU.VERGINUMARASI,'')='' THEN TBLBFORMU.TCKIMLIKNO ELSE TBLBFORMU.VERGINUMARASI END), 
VergiDairesi = (select dbo.trk(TBLCASABIT.VERGI_DAIRESI) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
CariKodu = dbo.trk(TBLBFORMU.CARI_KOD), 
Unvani = dbo.trk(TBLBFORMU.UNVAN), 
CariIl = (select dbo.trk(TBLCASABIT.CARI_IL) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
CariIlce = (select dbo.trk(TBLCASABIT.CARI_ILCE) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
CariAdresi = (select dbo.trk(TBLCASABIT.CARI_ADRES) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
GrupKodu = (select top(1)dbo.trk(TBLCASABIT.GRUP_KODU) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
Kod1 = (select dbo.trk(TBLCASABIT.RAPOR_KODU1) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
Kod2 = (select dbo.trk(TBLCASABIT.RAPOR_KODU2) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
Kod3 = (select dbo.trk(TBLCASABIT.RAPOR_KODU3) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
Kod4 = (select dbo.trk(TBLCASABIT.RAPOR_KODU4) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
Kod5 = (select dbo.trk(TBLCASABIT.RAPOR_KODU5) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
Telefon = (select dbo.trk(TBLCASABIT.CARI_TEL) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
Faks = (select dbo.trk(TBLCASABIT.FAX) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
CariTipi = (select dbo.trk(TBLCASABIT.CARI_TIP) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
BaBelgeSayisi = case when TBLBFORMU.ALISSATIS='A' then TBLBFORMU.BELGESAYISI else 0 end, 
BaTutar = case when TBLBFORMU.ALISSATIS='A' then TBLBFORMU.TUTAR else 0 end, 
BsBelgeSayisi = case when TBLBFORMU.ALISSATIS='S' then TBLBFORMU.BELGESAYISI else 0 end, 
BsTutar = case when TBLBFORMU.ALISSATIS='S' then TBLBFORMU.TUTAR else 0 end 
from TBLBFORMU 
where 
TBLBFORMU.VERGINUMARASI <> '-1' 
and TBLBFORMU.TCKIMLIKNO <> '-1' 
and TBLBFORMU.BELGESAYISI <> '-1' 
and TBLBFORMU.ISLETME_KODU = (SELECT TOP 1 TBLSUBELER.ISLETME_KODU FROM TBLSUBELER WITH(NOLOCK) WHERE TBLSUBELER.SUBE_KODU = @SUBEKODU )
) as temp 
inner join
(
select 
temp.VergiNo,
SUM(temp.BaBelgeSayisi) as BaBelgeSayisi,
SUM(temp.BaTutar) as BaTutar,
SUM(temp.BsBelgeSayisi) as BsBelgeSayisi,
SUM(temp.BsTutar) as BsTutar
from
(
select 
RANK() OVER (PARTITION BY (CASE WHEN ISNULL(TBLBFORMU.VERGINUMARASI,'')='' THEN TBLBFORMU.TCKIMLIKNO ELSE TBLBFORMU.VERGINUMARASI END) ORDER BY TBLBFORMU.INCKEYNO) AS Rank,
IncKeyNo = TBLBFORMU.INCKEYNO, 
OlusturmaTarihi = TBLBFORMU.KAYITTARIHI, 
VergiNo = (CASE WHEN ISNULL(TBLBFORMU.VERGINUMARASI,'')='' THEN TBLBFORMU.TCKIMLIKNO ELSE TBLBFORMU.VERGINUMARASI END), 
VergiDairesi = (select dbo.trk(TBLCASABIT.VERGI_DAIRESI) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
CariKodu = dbo.trk(TBLBFORMU.CARI_KOD), 
Unvani = dbo.trk(TBLBFORMU.UNVAN), 
CariIl = (select dbo.trk(TBLCASABIT.CARI_IL) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD),
CariIlce = (select dbo.trk(TBLCASABIT.CARI_ILCE) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD),
CariAdresi = (select dbo.trk(TBLCASABIT.CARI_ADRES) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
GrupKodu = (select top(1)dbo.trk(TBLCASABIT.GRUP_KODU) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
Kod1 = (select dbo.trk(TBLCASABIT.RAPOR_KODU1) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
Kod2 = (select dbo.trk(TBLCASABIT.RAPOR_KODU2) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
Kod3 = (select dbo.trk(TBLCASABIT.RAPOR_KODU3) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
Kod4 = (select dbo.trk(TBLCASABIT.RAPOR_KODU4) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
Kod5 = (select dbo.trk(TBLCASABIT.RAPOR_KODU5) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
Telefon = (select dbo.trk(TBLCASABIT.CARI_TEL) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
Faks = (select dbo.trk(TBLCASABIT.FAX) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
CariTipi = (select dbo.trk(TBLCASABIT.CARI_TIP) from TBLCASABIT WITH(NOLOCK) where TBLBFORMU.CARI_KOD = TBLCASABIT.CARI_KOD), 
BaBelgeSayisi = case when TBLBFORMU.ALISSATIS='A' then TBLBFORMU.BELGESAYISI else 0 end, 
BaTutar = case when TBLBFORMU.ALISSATIS='A' then TBLBFORMU.TUTAR else 0 end, 
BsBelgeSayisi = case when TBLBFORMU.ALISSATIS='S' then TBLBFORMU.BELGESAYISI else 0 end, 
BsTutar = case when TBLBFORMU.ALISSATIS='S' then TBLBFORMU.TUTAR else 0 end 
from TBLBFORMU WITH(NOLOCK)
where 
TBLBFORMU.VERGINUMARASI <> '-1' 
and TBLBFORMU.TCKIMLIKNO <> '-1' 
and TBLBFORMU.BELGESAYISI <> '-1' 
and TBLBFORMU.ISLETME_KODU = (SELECT TOP 1 TBLSUBELER.ISLETME_KODU FROM TBLSUBELER WITH(NOLOCK) WHERE TBLSUBELER.SUBE_KODU = @SUBEKODU )
) as temp
group by VergiNo
)
toplamlar on toplamlar.VergiNo = temp.VergiNo
) as son
where son.IncKeyNo is not null
end 