Forum

Eksik veya hatalı S...
 
Bildirimler
Hepsini Temizle

[Çözüldü] Eksik veya hatalı SQL Cümlesi hakkında

Mehmet Ertaş
(@mehmetertai)
Üye

Merhabalar,

Sql'de satış raporu almak için yazdığım bir cümlede doğru sonuç alamıyorum,
iki adet view ve bir adet tabloyu join ile birleştirdiğim şöyle bir sorgum var;
 
DECLARE @AY SMALLINT SET @AY ='3'
SELECT BM.STOK_KODU, BM.STOK_ADI
,SUM(CASE WHEN W20.AY = @AY THEN W20.TOPLAM_TUTAR  ELSE 0 END) AS T2020  
,SUM(CASE WHEN W21.AY = @AY THEN W21.TOPLAM_TUTAR  ELSE 0 END) AS T2021
FROM BIMANAGRUP BM FULL JOIN
TBLWRAPOR2021 W21 ON BM.STOK_KODU = W21.STOK FULL JOIN
TBLWRAPOR2020 W20 ON BM.STOK_KODU = W20.STOK AND W20.AY=W21.AY
where BM.ANAGRUP = 'TUTUN MAMULLERI'
GROUP BY BM.STOK_KODU,BM.STOK_ADI
 
2021 yılının verileri doğru geliyor, fakat 2020 yılı eksik geliyor,
sorguyu ;
 
DECLARE @AY SMALLINT SET @AY ='3'
SELECT BM.STOK_KODU, BM.STOK_ADI
,SUM(CASE WHEN W20.AY = @AY THEN W20.TOPLAM_TUTAR  ELSE 0 END) AS T2020  
,SUM(CASE WHEN W21.AY = @AY THEN W21.TOPLAM_TUTAR  ELSE 0 END) AS T2021
FROM BIMANAGRUP BM FULL JOIN
TBLWRAPOR2020 W20 ON BM.STOK_KODU = W20.STOK FULL JOIN
TBLWRAPOR2021 W21 ON BM.STOK_KODU = W21.STOK AND W21.AY=W20.AY
where BM.ANAGRUP = 'TUTUN MAMULLERI'
GROUP BY BM.STOK_KODU,BM.STOK_ADI
 
şeklinde değiştirdiğimde 2020 yılı doğru fakat 2021 yılı eksik geliyor.
Join işleminde ne gibi bir eksikliğim var acaba,
Yardımcı olabilirseniz sevinirim,
Teşekkürler.
Alıntı
Topic starter Gönderildi : 28/07/2021 17:45
Mehmet Sucu
(@mehmetsucu)
Üye

Merhaba, bunu bi dener misiniz?

DECLARE @AY SMALLINT ;
SET @AY = '3' ;
SELECT BM.STOK_KODU
, BM.STOK_ADI
, SUM( CASE
WHEN W20.AY = @AY THEN W20.TOPLAM_TUTAR
ELSE 0
END
) AS T2020
, SUM( CASE
WHEN W21.AY = @AY THEN W21.TOPLAM_TUTAR
ELSE 0
END
) AS T2021
FROM BIMANAGRUP BM
LEFT JOIN TBLWRAPOR2020 W20
ON BM.STOK_KODU = W20.STOK
LEFT JOIN TBLWRAPOR2021 W21
ON BM.STOK_KODU = W21.STOK
WHERE BM.ANAGRUP = 'TUTUN MAMULLERI'
GROUP BY BM.STOK_KODU
, BM.STOK_ADI ;

Mehmet SUCU
HBYS Yazılım Uzmanı
[email protected]
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

CevapAlıntı
Gönderildi : 29/07/2021 10:33
Mehmet Ertaş
(@mehmetertai)
Üye

Sayın @mehmetsucu maalesef sonuç aynı ☹️ 

CevapAlıntı
Topic starter Gönderildi : 29/07/2021 11:09
Mehmet Ertaş
(@mehmetertai)
Üye

Aslında istediğim,

Şu iki sorguyu birleştirmekti;

 

DECLARE @AY SMALLINT SET @AY = '3'

SELECT STOK,STOK_ISMI,SUM(TOPLAM_TUTAR) FROM TBLWRAPOR2021 WHERE AY= @AY AND ANAGRUP = 'TUTUN MAMULLERI'
GROUP BY STOK,STOK_ISMI

SELECT STOK,STOK_ISMI,SUM(TOPLAM_TUTAR) FROM TBLWRAPOR2020 WHERE AY= @AY AND ANAGRUP = 'TUTUN MAMULLERI'
GROUP BY STOK,STOK_ISMI

 

Sonuçlar doğru dönmeyince,

Stok sabit kayıtlarının tutulduğu BIMANAGRUP tablomu sola alıp yapmaya çalıştım,

Fakat bir türlü iki tablonun toplam verilerini bir arada alamadım...

CevapAlıntı
Topic starter Gönderildi : 29/07/2021 14:29
Ömer ÇOLAKOĞLU
(@omercolakoglu)
Üye

Bunu dene. Tüm ürün gruplarının tüm ay ve yıllar için toplamını getirir. 

Yıl alanı sorguda görünmüyor ama YIL diye tahmin ediyorum. 

SELECT ANAGRUP,YIL,AY,SUM(TOPLAMTUTAR) FROM
(
SELECT * FROM TBLWRAPOR2020
UNION ALL
SELECT * FROM TBLWRAPOR2021
) T
GROUP BY YIL,AY,ANAGRUP

 

3. aydakileri tek satırda yılsız toplam olarak görmek istersen de bunu dene

SELECT   SUM(TOPLAMTUTAR) FROM
(
SELECT * FROM TBLWRAPOR2020
UNION ALL
SELECT * FROM TBLWRAPOR2021
) T

where AY='3' AND ANAGRUP='TÜTÜN MAMÜLLERİ'
 

 

CevapAlıntı
Gönderildi : 29/07/2021 14:44
Mehmet Ertaş
(@mehmetertai)
Üye

Sayın @omercolakoglu ,

Union All ile iki tabloyu birleştirmek istemedim aslında, yanlış anlattım sanırım,

sATIS

 Bu şekilde 2020 yılı ve 2021 yılını karşılaştırarak, tekel grubu ürünlerin 3.ay satışını almak istemiştim.

Teşekkür ederim.

CevapAlıntı
Topic starter Gönderildi : 29/07/2021 15:31
Ömer ÇOLAKOĞLU
(@omercolakoglu)
Üye

Kodlara izin vermediği için kodu txt olarak paylaşıyorum. Verisetini generate eden ve iki farklı yöntemle sonucu gösteren sorgular ve sonuçları ekte.

image

 

image
CevapAlıntı
Gönderildi : 29/07/2021 18:27
Hakan Uzuner beğendi
Mehmet Ertaş
(@mehmetertai)
Üye

Sayın @omercolakoglu ,

Emeğinize Sağlık , Süpersiniz.

CevapAlıntı
Topic starter Gönderildi : 30/07/2021 09:37
Paylaş: