Bildirimler
Hepsini Temizle

Winner Perakende Satış - Mağaza Ciro Raporunun Stok Sınıflarına Göre Çıkartılması  

  RSS
Perfect
(@Perfect)
Üye
Öncelikle böyle bir siteyi açıp bizim gibi zorda kalan arkadaşlara yardımcı olduğunuz için teşekkür ederim. Benim yapamadığım şu, öncelikle sql profiler ile mağazaların ciro raporunu alan sql sorgusunu yakalıyorum. daha sonra bu sorgu üzerinde değişiklik yaparak oluşturacağım view ile excelle dış veri aldan verileri çekerek özel bir rapor hazırlamak istiyorum buraya kadar herşey normal ama bu sorguya eklemeler yaptığımda sonuçlar şaşıyor. tek istediğim bu rapora AY,YIL, ve Stok Sınıflarını ekleyebilmek.
Yakaladığım sorgu aşağıda
 
select sDepoTipi, sDepoTipiAck, 
       sMagaza , sMagazaAck, 
       sum(SatisMiktari) as SatisMiktari, sum(SatisTutari) as SatisTutari, sum(SatisIskonto) as SatisIskonto,
       sum(IadeMiktari) as IadeMiktari, sum(IadeTutari) as IadeTutari, sum(IadeIskonto) as IadeIskonto,
       sum(SatisMiktari+IadeMiktari) as NetMiktar,
       sum(NetTutar) As NetTutar,
       sum (KDVHaric) as KDVHaric,
       sum(MagazaMasrafi) as MagazaMasrafi,    
       max(KayitTarihi)as  KayitTarihi,
       sum(UrunDegistirmeMiktari) as UrunDegistirmeMiktari, sum(UrunDegistirmeTutari) as UrunDegistirmeTutari, sum(UrunDegistirmeIskonto) as UrunDegistirmeIskonto,
       sum(IadeMiktari) - sum(UrunDegistirmeMiktari) as FarkIadeMiktari, sum(IadeTutari) - sum(UrunDegistirmeTutari) as FarkIadeTutari, sum(IadeIskonto) - 
sum(UrunDegistirmeIskonto) as FarkIadeIskonto
from(
select 
       '' as sDepoTipi, '' as sDepoTipiAck,
       tbAlisveris.sMagaza, tbDepo.sAciklama as sMagazaAck,
       (nGirisCikis - 4)* (-1) * sum(lToplamMiktar) as SatisMiktari,
       (nGirisCikis - 4)* (-1) * sum(lMalBedeli) as SatisTutari,
       (nGirisCikis - 4)* (-1) * sum(lMalIskontoTutari+lDipIskonToTutari) as SatisIskonto,
       (nGirisCikis - 3)* sum(lToplamMiktar) as IadeMiktari,
       (nGirisCikis - 3)* sum(lMalBedeli) as IadeTutari,
       (nGirisCikis - 3)* sum(lMalIskontoTutari+lDipIskonToTutari) as IadeIskonto,
       sum(lNetTutar - lKdv1 - lKdv2 - lKdv3 - lKdv4 - lKdv5) As KDVHaric,
       sum(lNetTutar) as NetTutar,
       0 as MagazaMasrafi,
       '01/01/1900' as KayitTarihi,
       0 as UrunDegistirmeMiktari,0 as UrunDegistirmeTutari,0 as UrunDegistirmeIskonto
    From tbDepo, tbAlisveris
    Where tbDepo.sDepo = tbAlisveris.sMagaza
    and (tbAlisveris.nGirisCikis = 3 or tbAlisveris.nGirisCikis = 4)
    and tbAlisveris.dteFaturaTarihi between '01/01/1900' and '22/01/2010'
    
    and tbAlisveris.sFisTipi <> 'KA'
    and (  sMagaza = 'S01' or  sMagaza = 'S02' or  sMagaza = 'S03' or  sMagaza 
= 'S04' or  sMagaza = 'S05' or  sMagaza = 'S06' or  sMagaza = 'S07' or  sMagaza = 'S08' or  sMagaza = 'S09' or  sMagaza = 'W01')
    group by tbAlisveris.sMagaza, tbDepo.sAciklama, nGirisCikis
) as tempMagazaCiro
group by sDepoTipi, sDepoTipiAck, sMagaza, sMagazaAck
order by sMagaza
 
Not : Bu istediğim raporu Stoktan satışlar(depo dağılımlı) olarak al diyebilirsiniz ama çalıştığım firmada Sonradan teslim olayımız var. Bu yüzden stoktan aldığım rakamlar ile perakende satıştan aldığım rakamlar bir birini tutmuyor.
 
Bu konuda bana yardımcı olabilirseniz çok ama çok sevinirim. 
Alıntı
Gönderildi : 22/01/2010 18:49
Bugra KESKIN
(@bugrakeskin)
Saygın Üye

Merhaba

Stok detayı tbalisveris tablosunda tutulmuyor bu sqle stok sınıf ekleyemez veya stokla ilgili rapor da detay verilmez.

CevapAlıntı
Gönderildi : 22/01/2010 22:13
Perfect
(@Perfect)
Üye

Peki Böyle bir raporu alacağım bir sql cümleciği varmıdır yada hangi tablolardan çekebileceğimi söylermisiniz ?

CevapAlıntı
Gönderildi : 23/01/2010 11:33
Orhan AKDOĞAN
(@orhanakdogan)
Üye

Merhabalar,
Çok mantıklı bir istek, reelde karşılığı olan herşeyi sorgu ile yapmak mümkündür.

Aşağıdaki şekilde mağazalar ve toplam bilgilerini sınıf tiplerine göre ayırabilirsiniz;

Örneğin muğla,söke,laleli olarak 3 mağaza varsayalım,
sezon diye bir sınıf tipi ve altında 07 ,08, 09 diye kodlar var kabul edelim,

ciroları aşağıdaki gibi gözlemleyebilirsiniz;

07, söke, ..., .....
07, muğla, ..., .....
07, laleli, ..., .....
08, söke, ..., .....
08, muğla, ..., .....
08, laleli, ..., .....
09, söke, ..., .....
09, muğla, ..., .....
09, laleli, ..., .....

(istediğiniz sınıf tipine göre ayrım yapmak isterseniz tümünü değiştir ile sSinifKodu1 yerine sSinifKoduX getirisiniz.)

SET DATEFORMAT DMY
select SinifKodu, SinifAck,sMagaza,sMagazaAck,
       --StokKodu, StokAck,
       sum(SatisMiktar) as SatisMiktar, sum(SatisTutar) as SatisTutar, sum(SatisTutarFiyatli) as SatisTutarFiyatli,
       sum(SatisIadeMiktar) as SatisIadeMiktar, sum(SatisIadeTutar) as SatisIadeTutar, sum(SatisIadeTutarFiyatli) as SatisIadeTutarFiyatli,
       sum(NetMiktar) as NetMiktar, sum(NetTutar) as NetTutar, sum(NetTutarFiyatli) as NetTutarFiyatli,BirimCinsi
from(
select tbStokSinifi.sSinifKodu1 as SinifKodu,tbAlisveris.sMagaza,tbDepo.sAciklama as sMagazaAck,
       tbSSinif1.sAciklama as SinifAck,
       '' as StokKodu,
       '' as StokAck,
       '' as BirimCinsi,
       sum(lCikisMiktar1 * (4 - tbStokFisiDetayi.nGirisCikis)) as SatisMiktar,
       sum((lBrutTutar - lIskontoTutari) * (4 - tbStokFisiDetayi.nGirisCikis) ) as SatisTutar, 0 as SatisTutarFiyatli,
       sum(lCikisMiktar1 * (tbStokFisiDetayi.nGirisCikis - 3)) as SatisIadeMiktar,
       sum((lBrutTutar - lIskontoTutari) * (tbStokFisiDetayi.nGirisCikis - 3) ) as SatisIadeTutar, 0 as SatisIadeTutarFiyatli,
       sum(lCikisMiktar1) as NetMiktar,
       sum(lBrutTutar - lIskontoTutari) As NetTutar, 0 as NetTutarFiyatli
From tbAlisveris,
     tbFisTipi,
     tbMusteri,
     tbStokFisiDetayi,
     tbStok
     ,tbStokSinifi
     ,tbSSinif1,tbdepo
where  tbDepo.sDepo = tbAlisveris.sMagaza and
tbAlisveris.nAlisverisID = tbStokFisiDetayi.nAlisverisID and
       tbAlisveris.nMusteriID = tbMusteri.nMusteriID and
       tbAlisveris.sFisTipi = tbFisTipi.sFisTipi and
       tbFisTipi.bSatisMi = 1 and
       tbFisTipi.nGCT > 2  and
       tbStokFisiDetayi.nStokID = tbStok.nStokID And
       tbStokSinifi.nStokID = tbStok.nStokID and
       tbStokSinifi.sSinifKodu1 = tbSSinif1.sSinifKodu and
       tbAlisveris.dteFaturaTarihi between '20/01/2010' and  '23/01/2010' and
       tbMusteri.lKodu between 0 and 999999999
       and ( tbAlisveris.sFistipi='CP' or  tbAlisveris.sFistipi='K' or  tbAlisveris.sFistipi='KS' or  tbAlisveris.sFistipi='KVF' or  tbAlisveris.sFistipi='P' or  tbAlisveris.sFistipi='PAD' or  tbAlisveris.sFistipi='PD' or  tbAlisveris.sFistipi='PTX' or  tbAlisveris.sFistipi='SK' or  tbAlisveris.sFistipi='SP')
group by tbStokSinifi.sSinifKodu1,
         tbSSinif1.sAciklama,tbAlisveris.sMagaza,tbDepo.sAciklama
Union All
select tbStokSinifi.sSinifKodu1 as SinifKodu,tbAlisveris.sMagaza,tbDepo.sAciklama as sMagazaAck,
       tbSSinif1.sAciklama as SinifAck,
       '' as StokKodu,
       '' as StokAck,
       '' as BirimCinsi,
       sum(lGCMiktar * (4 - tbAlisverisSiparis.nGirisCikis)) as SatisMiktar,
       sum((lBrutTutar - lIskontoTutari) * (4 - tbAlisverisSiparis.nGirisCikis) ) as SatisTutar, 0 as SatisTutarFiyatli,
       sum(lGCMiktar * (tbAlisverisSiparis.nGirisCikis - 3)) as SatisIadeMiktar,
       sum((lBrutTutar - lIskontoTutari) * (tbAlisverisSiparis.nGirisCikis - 3) ) as SatisIadeTutar, 0 as SatisIadeTutarFiyatli,
       sum(lGCMiktar) as NetMiktar,
       sum(lBrutTutar - lIskontoTutari) As NetTutar, 0 As NetTutarFiyatli
From tbAlisveris,
     tbMusteri,
     tbFisTipi,
     tbAlisverisSiparis,
     tbStok
     , tbStokSinifi
     ,tbSSinif1,tbdepo
where  tbDepo.sDepo = tbAlisveris.sMagaza and
tbAlisveris.nAlisverisID = tbAlisverisSiparis.nAlisverisID and
       tbAlisveris.nMusteriID = tbMusteri.nMusteriID and
       tbAlisveris.sFisTipi = tbFisTipi.sFisTipi and
       tbFisTipi.bSatisMi = 1 and
       tbFisTipi.nGCT > 2  and
       tbAlisverisSiparis.nStokID = tbStok.nStokID and
       tbStokSinifi.nStokID = tbStok.nStokID and
       tbStokSinifi.sSinifKodu1 = tbSSinif1.sSinifKodu and
       tbAlisveris.dteFaturaTarihi between '20/01/2010' and  '23/01/2010' and
       tbMusteri.lKodu between 0 and 999999999
       and ( tbAlisveris.sFistipi='CP' or  tbAlisveris.sFistipi='K' or  tbAlisveris.sFistipi='KS' or  tbAlisveris.sFistipi='KVF' or  tbAlisveris.sFistipi='P' or  tbAlisveris.sFistipi='PAD' or  tbAlisveris.sFistipi='PD' or  tbAlisveris.sFistipi='PTX' or  tbAlisveris.sFistipi='SK' or  tbAlisveris.sFistipi='SP')
group by tbStokSinifi.sSinifKodu1,
         tbSSinif1.sAciklama,tbAlisveris.sMagaza,tbDepo.sAciklama
) as TEMPSatislar
group by SinifKodu, SinifAck, StokKodu, StokAck,BirimCinsi,sMagaza,sMagazaAck
order by SinifKodu, Stokkodu
--tüm toplamlarıda çekmek isterseniz aşağıdaki satırları açın.
--compute sum(sum(SatisMiktar)),sum(sum(SatisTutar)), sum(sum(SatisTutarFiyatli)),
        --sum(sum(SatisIadeMiktar)),sum(sum(SatisIadeTutar)),sum(sum(SatisIadeTutarFiyatli)),
        --sum (sum(NetMiktar)), sum(sum(NetTutar)), sum(sum(NetTutarFiyatli))

CevapAlıntı
Gönderildi : 23/01/2010 22:06
Orhan AKDOĞAN
(@orhanakdogan)
Üye

Tablolar arasında ki ilişki mantığını daha iyi anlayabilmek için nebim viewlerini inceleyebilirsiniz, sizin yazmış olduğunuz sorgu üzerinden de gidilebilirdi yani,buradaki ilgili ilişkiyi vwPerakendaFatura view inden çıkarabilirdiniz mesela.

CevapAlıntı
Gönderildi : 23/01/2010 22:13
Perfect
(@Perfect)
Üye

Yardımlarınız için çok teşekkür ederim. Çok faydalı oldu benim için...

CevapAlıntı
Gönderildi : 25/01/2010 11:40
Perfect
(@Perfect)
Üye

Sizden Son isteğim Ay ve YIL ı nereye ekleyebileceğimi söylerseniz size çok minnettar kalıcam.

CevapAlıntı
Gönderildi : 25/01/2010 12:58
Perfect
(@Perfect)
Üye

Tamam ben hallettim. aşağıdaki gibi olacakmış... Bu sql sayesinde mağazaların satışlarını günlük aylık ve yıllık olarak değerlendirebileceğim teşekkürler...

SELECT     TOP (100) PERCENT SinifKodu, SinifAck, sMagaza, sMagazaAck, SUM(SatisMiktar) AS SatisMiktar, SUM(SatisTutar) AS SatisTutar, 

                      SUM(SatisTutarFiyatli) AS SatisTutarFiyatli, SUM(SatisIadeMiktar) AS SatisIadeMiktar, SUM(SatisIadeTutar) AS SatisIadeTutar, 

                      SUM(SatisIadeTutarFiyatli) AS SatisIadeTutarFiyatli, SUM(NetMiktar) AS NetMiktar, SUM(NetTutar) AS NetTutar, SUM(NetTutarFiyatli) AS NetTutarFiyatli, 

                      BirimCinsi, DATEPART(year, dteFaturaTarihi) AS YIL, DATEPART(month, dteFaturaTarihi) AS AY, DATEPART(day, dteFaturaTarihi) AS gun

FROM         (SELECT     dbo.tbStokSinifi.sSinifKodu1 AS SinifKodu, dbo.tbAlisVeris.sMagaza, dbo.tbDepo.sAciklama AS sMagazaAck, 

                                              dbo.tbSSinif1.sAciklama AS SinifAck, '' AS StokKodu, '' AS StokAck, '' AS BirimCinsi, 

                                              SUM(dbo.tbStokFisiDetayi.lCikisMiktar1 * (4 - dbo.tbStokFisiDetayi.nGirisCikis)) AS SatisMiktar, 

                                              SUM((dbo.tbStokFisiDetayi.lBrutTutar - dbo.tbStokFisiDetayi.lIskontoTutari) * (4 - dbo.tbStokFisiDetayi.nGirisCikis)) AS SatisTutar, 

                                              0 AS SatisTutarFiyatli, SUM(dbo.tbStokFisiDetayi.lCikisMiktar1 * (dbo.tbStokFisiDetayi.nGirisCikis - 3)) AS SatisIadeMiktar, 

                                              SUM((dbo.tbStokFisiDetayi.lBrutTutar - dbo.tbStokFisiDetayi.lIskontoTutari) * (dbo.tbStokFisiDetayi.nGirisCikis - 3)) AS SatisIadeTutar, 

                                              0 AS SatisIadeTutarFiyatli, SUM(dbo.tbStokFisiDetayi.lCikisMiktar1) AS NetMiktar, 

                                              SUM(dbo.tbStokFisiDetayi.lBrutTutar - dbo.tbStokFisiDetayi.lIskontoTutari) AS NetTutar, 0 AS NetTutarFiyatli, 

                                              dbo.tbAlisVeris.dteFaturaTarihi

                       FROM          dbo.tbAlisVeris INNER JOIN

                                              dbo.tbDepo ON dbo.tbAlisVeris.sMagaza = dbo.tbDepo.sDepo INNER JOIN

                                              dbo.tbStokFisiDetayi ON dbo.tbAlisVeris.nAlisverisID = dbo.tbStokFisiDetayi.nAlisverisID INNER JOIN

                                              dbo.tbMusteri ON dbo.tbAlisVeris.nMusteriID = dbo.tbMusteri.nMusteriID INNER JOIN

                                              dbo.tbFisTipi ON dbo.tbAlisVeris.sFisTipi = dbo.tbFisTipi.sFisTipi INNER JOIN

                                              dbo.tbStok ON dbo.tbStokFisiDetayi.nStokID = dbo.tbStok.nStokID INNER JOIN

                                              dbo.tbStokSinifi ON dbo.tbStok.nStokID = dbo.tbStokSinifi.nStokID INNER JOIN

                                              dbo.tbSSinif1 ON dbo.tbStokSinifi.sSinifKodu1 = dbo.tbSSinif1.sSinifKodu

                       WHERE      (dbo.tbFisTipi.bSatismi = 1) AND (dbo.tbFisTipi.nGCT > 2) AND (dbo.tbAlisVeris.dteFaturaTarihi BETWEEN '01/01/2000' AND 

                                              '31/12/2015') AND (dbo.tbMusteri.lKodu BETWEEN 0 AND 999999999) AND (dbo.tbAlisVeris.sFisTipi = 'CP' OR

                                              dbo.tbAlisVeris.sFisTipi = 'K' OR

                                              dbo.tbAlisVeris.sFisTipi = 'KS' OR

                                              dbo.tbAlisVeris.sFisTipi = 'KVF' OR

                                              dbo.tbAlisVeris.sFisTipi = 'P' OR

                                              dbo.tbAlisVeris.sFisTipi = 'PAD' OR

                                              dbo.tbAlisVeris.sFisTipi = 'PD' OR

                                              dbo.tbAlisVeris.sFisTipi = 'PTX' OR

                                              dbo.tbAlisVeris.sFisTipi = 'SK' OR

                                              dbo.tbAlisVeris.sFisTipi = 'SP')

                       GROUP BY dbo.tbStokSinifi.sSinifKodu1, dbo.tbSSinif1.sAciklama, dbo.tbAlisVeris.sMagaza, dbo.tbDepo.sAciklama, 

                                              dbo.tbAlisVeris.dteFaturaTarihi

                       UNION ALL

                       SELECT     tbStokSinifi_1.sSinifKodu1 AS SinifKodu, tbAlisVeris_1.sMagaza, tbDepo_1.sAciklama AS sMagazaAck, tbSSinif1_1.sAciklama AS SinifAck, 

                                             '' AS StokKodu, '' AS StokAck, '' AS BirimCinsi, SUM(dbo.tbAlisverisSiparis.lGCMiktar * (4 - dbo.tbAlisverisSiparis.nGirisCikis)) AS SatisMiktar,

                                              SUM((dbo.tbAlisverisSiparis.lBrutTutar - dbo.tbAlisverisSiparis.lIskontoTutari) * (4 - dbo.tbAlisverisSiparis.nGirisCikis)) AS SatisTutar, 

                                             0 AS SatisTutarFiyatli, SUM(dbo.tbAlisverisSiparis.lGCMiktar * (dbo.tbAlisverisSiparis.nGirisCikis - 3)) AS SatisIadeMiktar, 

                                             SUM((dbo.tbAlisverisSiparis.lBrutTutar - dbo.tbAlisverisSiparis.lIskontoTutari) * (dbo.tbAlisverisSiparis.nGirisCikis - 3)) AS SatisIadeTutar, 

                                             0 AS SatisIadeTutarFiyatli, SUM(dbo.tbAlisverisSiparis.lGCMiktar) AS NetMiktar, 

                                             SUM(dbo.tbAlisverisSiparis.lBrutTutar - dbo.tbAlisverisSiparis.lIskontoTutari) AS NetTutar, 0 AS NetTutarFiyatli, 

                                             tbAlisVeris_1.dteFaturaTarihi

                       FROM         dbo.tbAlisVeris AS tbAlisVeris_1 INNER JOIN

                                             dbo.tbDepo AS tbDepo_1 ON tbAlisVeris_1.sMagaza = tbDepo_1.sDepo INNER JOIN

                                             dbo.tbAlisverisSiparis ON tbAlisVeris_1.nAlisverisID = dbo.tbAlisverisSiparis.nAlisverisID INNER JOIN

                                             dbo.tbMusteri AS tbMusteri_1 ON tbAlisVeris_1.nMusteriID = tbMusteri_1.nMusteriID INNER JOIN

                                             dbo.tbFisTipi AS tbFisTipi_1 ON tbAlisVeris_1.sFisTipi = tbFisTipi_1.sFisTipi INNER JOIN

                                             dbo.tbStok AS tbStok_1 ON dbo.tbAlisverisSiparis.nStokID = tbStok_1.nStokID INNER JOIN

                                             dbo.tbStokSinifi AS tbStokSinifi_1 ON tbStok_1.nStokID = tbStokSinifi_1.nStokID INNER JOIN

                                             dbo.tbSSinif1 AS tbSSinif1_1 ON tbStokSinifi_1.sSinifKodu1 = tbSSinif1_1.sSinifKodu

                       WHERE     (tbFisTipi_1.bSatismi = 1) AND (tbFisTipi_1.nGCT > 2) AND (tbAlisVeris_1.dteFaturaTarihi BETWEEN '01/01/2000' AND '31/12/2015') AND 

                                             (tbMusteri_1.lKodu BETWEEN 0 AND 999999999) AND (tbAlisVeris_1.sFisTipi = 'CP' OR

                                             tbAlisVeris_1.sFisTipi = 'K' OR

                                             tbAlisVeris_1.sFisTipi = 'KS' OR

                                             tbAlisVeris_1.sFisTipi = 'KVF' OR

                                             tbAlisVeris_1.sFisTipi = 'P' OR

                                             tbAlisVeris_1.sFisTipi = 'PAD' OR

                                             tbAlisVeris_1.sFisTipi = 'PD' OR

                                             tbAlisVeris_1.sFisTipi = 'PTX' OR

                                             tbAlisVeris_1.sFisTipi = 'SK' OR

                                             tbAlisVeris_1.sFisTipi = 'SP')

                       GROUP BY tbStokSinifi_1.sSinifKodu1, tbSSinif1_1.sAciklama, tbAlisVeris_1.sMagaza, tbDepo_1.sAciklama, tbAlisVeris_1.dteFaturaTarihi) 

                      AS TEMPSatislar

GROUP BY SinifKodu, SinifAck, StokKodu, StokAck, BirimCinsi, sMagaza, sMagazaAck, dteFaturaTarihi

ORDER BY SinifKodu, StokKodu 

CevapAlıntı
Gönderildi : 25/01/2010 16:04
Orhan AKDOĞAN
(@orhanakdogan)
Üye

Rica ederiz sn Perfect. iyi çalışmalar.

CevapAlıntı
Gönderildi : 26/01/2010 10:03
Paylaş: