Forum
Merhaba
Stok detayı tbalisveris tablosunda tutulmuyor bu sqle stok sınıf ekleyemez veya stokla ilgili rapor da detay verilmez.
Peki Böyle bir raporu alacağım bir sql cümleciği varmıdır yada hangi tablolardan çekebileceğimi söylermisiniz ?
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))
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.
Yardımlarınız için çok teşekkür ederim. Çok faydalı oldu benim için...
Sizden Son isteğim Ay ve YIL ı nereye ekleyebileceğimi söylerseniz size çok minnettar kalıcam.
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
Rica ederiz sn Perfect. iyi çalışmalar.