Logo Destek
Database => SQL => Konuyu başlatan: bluedeath82 - 04.09.2016, 19:54
-
Merhaba Arkadaşlar
Yıl sonu raporları için 2015 ve 2016 ürün satışlarını birbirleri ile karşılaştırmak istiyorum. Aşağıdaki bir tabloda ürünler için istemiş olduğum bir örnek bulunmaktadır. Yardımcı olacak arkadaşlar şimdiden gönülden çok teşekkür ediyorum.
Not : Tek sorguda böyle bir şey yapılabilir mi ? Yılların firma numaraları birbirinden farklıdır. (015 =2015 016=2016 )
ürün kodu ürün açıklaması 2015 adet 2016 adet 2015 ciro 2016 ciro
m.0001 elma 10 17 5,00 8,50
-
Sorguyu Çalıştırıp Sonucu yazarsanız.
WITH TABLOA
AS (SELECT '2016' FİRMA,
ITM.CODE,
ITM.NAME,
SUM(STL.AMOUNT) AS MİKTAR2016,
SUM(STL.LINENET) AS TUTAR2016
FROM dbo.LG_016_01_STLINE AS STL
INNER JOIN dbo.LG_016_ITEMS AS ITM
ON ITM.LOGICALREF = STL.STOCKREF
WHERE STL.TRCODE = 8
AND ITM.CARDTYPE = 1
GROUP BY ITM.NAME,
ITM.CODE
),
TABLOB
AS (SELECT '2015' FİRMA,
ITM.CODE,
ITM.NAME,
SUM(STL.AMOUNT) AS MİKTAR2015,
SUM(STL.LINENET) AS TUTAR2015
FROM dbo.LG_015_01_STLINE AS STL
INNER JOIN dbo.LG_015_ITEMS AS ITM
ON ITM.LOGICALREF = STL.STOCKREF
WHERE STL.TRCODE = 8 /*TOPTAN SATIŞ*/
AND ITM.CARDTYPE = 1
GROUP BY ITM.NAME,
ITM.CODE
)
SELECT TABLOA.CODE,
TABLOA.NAME,
TABLOA.MİKTAR2016,
TABLOB.MİKTAR2015,
TABLOA.TUTAR2016,
TABLOB.TUTAR2015,
TABLOA.TUTAR2016 - TABLOB.TUTAR2015 AS FARK
FROM TABLOA
INNER JOIN TABLOB
ON TABLOB.NAME = TABLOA.NAME;
-
Sorguyu Çalıştırıp Sonucu yazarsanız.
WITH TABLOA
AS (SELECT '2016' FİRMA,
ITM.CODE,
ITM.NAME,
SUM(STL.AMOUNT) AS MİKTAR2016,
SUM(STL.LINENET) AS TUTAR2016
FROM dbo.LG_016_01_STLINE AS STL
INNER JOIN dbo.LG_016_ITEMS AS ITM
ON ITM.LOGICALREF = STL.STOCKREF
WHERE STL.TRCODE = 8
AND ITM.CARDTYPE = 1
GROUP BY ITM.NAME,
ITM.CODE
),
TABLOB
AS (SELECT '2015' FİRMA,
ITM.CODE,
ITM.NAME,
SUM(STL.AMOUNT) AS MİKTAR2015,
SUM(STL.LINENET) AS TUTAR2015
FROM dbo.LG_015_01_STLINE AS STL
INNER JOIN dbo.LG_015_ITEMS AS ITM
ON ITM.LOGICALREF = STL.STOCKREF
WHERE STL.TRCODE = 8 /*TOPTAN SATIŞ*/
AND ITM.CARDTYPE = 1
GROUP BY ITM.NAME,
ITM.CODE
)
SELECT TABLOA.CODE,
TABLOA.NAME,
TABLOA.MİKTAR2016,
TABLOB.MİKTAR2015,
TABLOA.TUTAR2016,
TABLOB.TUTAR2015,
TABLOA.TUTAR2016 - TABLOB.TUTAR2015 AS FARK
FROM TABLOA
INNER JOIN TABLOB
ON TABLOB.NAME = TABLOA.NAME;
Rapor çok iyi çalışıyor burda ürünlerin birimler stok grup kodları cari hesap kodu yada ünvanı eklenirse çok kullanışlı olabilir.
-
toptan satış faturası kesilerken hizmet kalemi içeriyorsa sonuçlar yanlış dönüyor.. bilginize..
-
herşeyi devletten beklemeyin , çalışın , araştırın biraz :)
-
Ana tablo bizden , gerisi sizden
-
Rapor kendime göre uyarladıktan sonra çok güzel olmuş emeği geçen herkese çok teşekkür ederim.
TabloA 2016 yılını kapsıyor ve TabloB 2015 yılını kapsamaktadır.
2015 yılında tüm satış yapılan ürünleri göstermiyor. Sadece 2016 daki ürünlere göre 2015 yılının satışlarını getirmektedir.
2016 ürünlerinin içerisine 2015 yılından 2016 yılana devredilmeyen ürünleri de getirebilir mi?
-
O zaman INNER JOIN yerine LEFT JOIN veya RIGTH JOIN yapınız..
-
Selamlar,
Teknik21 vermiş olduğunuz paylaşım için teşekkür ederim.
Ben çoktan beri arıyodum :)