Forum

Sql aylık raporlama
 
Bildirimler
Hepsini Temizle

Sql aylık raporlama

6 Yazılar
2 Üyeler
0 Likes
3,975 Görüntüleme
(@omer)
Gönderiler: 27
Eminent Member
Konu başlatıcı
 

Yeni üye oldum konuyu yanlış yerde yada yanlış açmış isem kusura bakmayın. Satış faturaları tablosunda (INVOICE) TRCODE’u 7 olan satış faturaların toplamından TRCODE’u 2 olan satış iade faturalarının toplamlarını çıkartıp net tutarları ay bazında raporlayan sql sorgusu için yardım edebilirmisiniz. Ocak ayında 1000₺ satışı faturam 500 alış faturam var bana bunlar lazım değil. Lazım olan ocak ayında 500(net tutar) yazması ve bunu tek tablodu 12 satır şeklinde yani ay bazında olması gerekiyor. (NETTOTAL yani net toplam sütunu tabloda mevcuttur)

 
Gönderildi : 15/05/2019 01:00

(@vedatozerr)
Gönderiler: 63
Trusted Member
 

Merhaba,

Firma ve dönem bilgisini değiştirip deneyin.

WITH SATIS AS ( 
SELECT CLCARD.CODE [Cari Kodu],CLCARD.DEFINITION_ [Cari Adı],MONTH(INVOICE.DATE_) AY,
SUM(CASE WHEN INVOICE.TRCODE IN(7) THEN INVOICE.NETTOTAL ELSE -INVOICE.NETTOTAL END)NETSATIS
FROM LG_006_01_INVOICE INVOICE WITH(NOLOCK) INNER JOIN LG_006_CLCARD CLCARD WITH(NOLOCK) ON CLCARD.LOGICALREF=INVOICE.CLIENTREF
WHERE INVOICE.CANCELLED=0 AND INVOICE.TRCODE IN(7,2)
GROUP BY CLCARD.CODE,CLCARD.DEFINITION_,MONTH(INVOICE.DATE_)
),
ALTTOPLAM AS (
SELECT MONTH(INVOICE.DATE_) AY,
SUM(CASE WHEN INVOICE.TRCODE IN(7) THEN INVOICE.NETTOTAL ELSE -INVOICE.NETTOTAL END)NETSATIS
FROM LG_006_01_INVOICE INVOICE WITH(NOLOCK) INNER JOIN LG_006_CLCARD CLCARD WITH(NOLOCK) ON CLCARD.LOGICALREF=INVOICE.CLIENTREF
WHERE INVOICE.CANCELLED=0 AND INVOICE.TRCODE IN(7,2)
GROUP BY MONTH(INVOICE.DATE_)
)
SELECT
[Cari Kodu],
[Cari Adı],
ISNULL([1],0)'Ocak',
ISNULL([2],0)'Şubat',
ISNULL([3],0)'Mart',
ISNULL([4],0)'Nisan',
ISNULL([5],0)'Mayıs',
ISNULL([6],0)'Haziran',
ISNULL([7],0)'Temmuz',
ISNULL([8],0)'Ağustos',
ISNULL([9],0)'Eylül',
ISNULL([10],0)'Ekim',
ISNULL([11],0)'Kasım',
ISNULL([12],0)'Aralık',
ISNULL([1],0)+ISNULL([2],0)+ISNULL([3],0)+ISNULL([4],0)+ISNULL([5],0)+ISNULL([6],0)+ISNULL([7],0)+ISNULL([8],0)+ISNULL([9],0)+
ISNULL([10],0)+ISNULL([11],0)+ISNULL([12],0) 'Genel Toplam'
FROM SATIS
PIVOT(SUM(NETSATIS)FOR [AY] IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12]))AS VEDAT
UNION ALL
SELECT
'',
'Alt Toplam',
ISNULL([1],0)'Ocak',
ISNULL([2],0)'Şubat',
ISNULL([3],0)'Mart',
ISNULL([4],0)'Nisan',
ISNULL([5],0)'Mayıs',
ISNULL([6],0)'Haziran',
ISNULL([7],0)'Temmuz',
ISNULL([8],0)'Ağustos',
ISNULL([9],0)'Eylül',
ISNULL([10],0)'Ekim',
ISNULL([11],0)'Kasım',
ISNULL([12],0)'Aralık',
ISNULL([1],0)+ISNULL([2],0)+ISNULL([3],0)+ISNULL([4],0)+ISNULL([5],0)+ISNULL([6],0)+ISNULL([7],0)+ISNULL([8],0)+ISNULL([9],0)+
ISNULL([10],0)+ISNULL([11],0)+ISNULL([12],0) 'Genel Toplam'
FROM ALTTOPLAM
PIVOT(SUM(NETSATIS)FOR [AY] IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12]))AS VEDAT

 

حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
[email protected]

 
Gönderildi : 15/05/2019 08:58

(@omer)
Gönderiler: 27
Eminent Member
Konu başlatıcı
 

Vedat bey dün gece istediğim şekilde sorgumu oluşturabildim. Yardımlarınız için çok teşekkür ediyorum. Göndermiş olduğunuz sorgularda işime çok yarayacak o yüzden de ayrı teşekkür ederim. Kendi çözmüş olduğum sorguyu da paylaşmak istiyorum. Kendi hazırlamış olduğum sorguda herhangi bir problem yaşarmıyım performans vb gibi bilmiyorum.

SELECT
PARAKENDE=(ISNULL(ROUND(SUM(CASE WHEN TRCODE=7 THEN NETTOTAL END),2),0))-(ISNULL(ROUND(SUM(CASE WHEN TRCODE=2 THEN NETTOTAL END),2),0)),
CARI=(ISNULL(ROUND(SUM(CASE WHEN TRCODE=8 THEN NETTOTAL END),2),0))-(ISNULL(ROUND(SUM(CASE WHEN TRCODE=3 THEN NETTOTAL END),2),0))
FROM LG_XXX_01_INVOICE WITH (NOLOCK) WHERE CANCELLED=0
GROUP BY MONTH(DATE_)
ORDER BY MONTH(DATE_)

 
Gönderildi : 15/05/2019 11:36

(@vedatozerr)
Gönderiler: 63
Trusted Member
 

Merhaba,

Sorgu'da performans sorunu olmaz sanırım, yalnız fiş türleri olarak 7,8,2,3 belirtmenizde fayda var.

SELECT
MONTH(DATE_) AY,
PARAKENDE=(ISNULL(ROUND(SUM(CASE WHEN TRCODE=7 THEN NETTOTAL END),2),0))-(ISNULL(ROUND(SUM(CASE WHEN TRCODE=2 THEN NETTOTAL END),2),0)),
CARI=(ISNULL(ROUND(SUM(CASE WHEN TRCODE=8 THEN NETTOTAL END),2),0))-(ISNULL(ROUND(SUM(CASE WHEN TRCODE=3 THEN NETTOTAL END),2),0))
FROM LG_006_01_INVOICE WITH (NOLOCK) WHERE CANCELLED=0 AND TRCODE IN (7,8,2,3)
GROUP BY MONTH(DATE_)
ORDER BY MONTH(DATE_)

حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
[email protected]

 
Gönderildi : 15/05/2019 11:42

(@omer)
Gönderiler: 27
Eminent Member
Konu başlatıcı
 

Vedat Bey, dediğiniz şekilde güncelledim sorgumu. Çok teşekkür ederim.

 
Gönderildi : 15/05/2019 11:48

(@vedatozerr)
Gönderiler: 63
Trusted Member
 

Rica ederim.

İyi çalışmalar dilerim.                                                                                                                                                             

حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
[email protected]

 
Gönderildi : 15/05/2019 12:27

Paylaş: