SQL Kümüle Rapor

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ozcank
Üye
Mesajlar: 859
Kayıt: 28 Nis 2005 04:29

SQL Kümüle Rapor

Mesaj gönderen ozcank » 31 Tem 2019 02:18

Merhaba; Veri tabanında aynı vergi no ve tc no ya ait farklı cari kartlar var ben bunları raporlamak istediğim de cari isimlerini göstermek istiyorum fakat sadece vergi no da kilerin cari isimleri gözüküyor tc.no olanların cari isimlerini nasıl gösterebilirim?
Kod bu şekilde;

Kod: Tümünü seç

SELECT CS.CARI_ISIM, month(tarih) AS 'AY', Sum(TBLFATUIRS.BRUTTUTAR - SAT_ISKT - GEN_ISK1T - GEN_ISK2T - GEN_ISK3T) AS 'KDV_HARIC_TUTAR', Count(TBLFATUIRS.FATIRS_NO) AS 'FATURA_SAYISI', CS.VERGI_NUMARASI,TBLCASABITEK.TCKIMLIKNO, CS.VERGI_DAIRESI
FROM TBLFATUIRS
INNER JOIN TBLCASABIT CS ON CS.CARI_KOD=TBLFATUIRS.CARI_KODU 
LEFT OUTER JOIN TBLCASABIT MC ON MC.VERGI_NUMARASI=CS.VERGI_NUMARASI AND MC.RAPOR_KODU5='MERKEZ'
INNER JOIN TBLCASABITEK ON CS.CARI_KOD=TBLCASABITEK.CARI_KOD 
WHERE CS.CARI_KOD = TBLFATUIRS.CARI_KODU --AND CS.VERGI_NUMARASI='1111111111' --- TBLCASABITEK.TCKIMLIKNO='11111111111'  ---     CS.VERGI_NUMARASI='1111111111'
GROUP BY CS.CARI_ISIM, month(tarih),CS.VERGI_NUMARASI,TBLCASABITEK.TCKIMLIKNO, CS.VERGI_DAIRESI,TBLFATUIRS.FTIRSIP
HAVING (Sum(TBLFATUIRS.BRUTTUTAR - SAT_ISKT - GEN_ISK1T - GEN_ISK2T - GEN_ISK3T)>=$5000) AND TBLFATUIRS.FTIRSIP='1' AND month(tarih)='1' --AND VERGI_NUMARASI='1111111111'
GO

denizfatihi
Üye
Mesajlar: 236
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: SQL Kümüle Rapor

Mesaj gönderen denizfatihi » 31 Tem 2019 02:37

Merhaba,

Tablo yapısını da gönderirseniz yardımcı olalım.

iyi çalışmalar,

ozcank
Üye
Mesajlar: 859
Kayıt: 28 Nis 2005 04:29

Re: SQL Kümüle Rapor

Mesaj gönderen ozcank » 31 Tem 2019 03:17

Teşekkür ederim öncelikle. Tablo yapım şu şekilde;
3 tane tablom var
TBLCASABIT burdaki alanları CARI_KOD,CARI_ISIM,VERGI_NUMARASI,VERGI_DAIRESI
TBLCASABITEK buradaki alanları CARI_KOD,TCKIMLIKNO
TBLFATUIRS buradakı alanları CARI_KODU,TARIH, BRUTTUTAR , SAT_ISKT , GEN_ISK1T ,GEN_ISK2T, GEN_ISK3T

Bu şekilde.

denizfatihi
Üye
Mesajlar: 236
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: SQL Kümüle Rapor

Mesaj gönderen denizfatihi » 31 Tem 2019 04:08

Merhaba,

Aşağıda ki şekilde dener misin ?

Kod: Tümünü seç

SELECT CS.CARI_ISIM, month(tarih) AS 'AY', 
Sum(TBLFATUIRS.BRUTTUTAR - SAT_ISKT - GEN_ISK1T - GEN_ISK2T - GEN_ISK3T) AS 'KDV_HARIC_TUTAR', 
Count(TBLFATUIRS.FATIRS_NO) AS 'FATURA_SAYISI', 
/*
CS.VERGI_NUMARASI,
TBLCASABITEK.TCKIMLIKNO, 
*/

CASE 
WHEN CS.VERGI_NUMARASI is null  THEN TBLCASABITEK.TCKIMLIKNO
ELSE CS.VERGI_NUMARASI END AS VERGINO,


CS.VERGI_DAIRESI
FROM TBLFATUIRS
INNER JOIN TBLCASABIT CS ON CS.CARI_KOD=TBLFATUIRS.CARI_KODU 
LEFT OUTER JOIN TBLCASABIT MC ON MC.VERGI_NUMARASI=CS.VERGI_NUMARASI AND MC.RAPOR_KODU5='MERKEZ'
INNER JOIN TBLCASABITEK ON CS.CARI_KOD=TBLCASABITEK.CARI_KOD 
WHERE CS.CARI_KOD = TBLFATUIRS.CARI_KODU --AND CS.VERGI_NUMARASI='1111111111' --- TBLCASABITEK.TCKIMLIKNO='11111111111'  ---     CS.VERGI_NUMARASI='1111111111'
GROUP BY CS.CARI_ISIM, month(tarih),CS.VERGI_NUMARASI,TBLCASABITEK.TCKIMLIKNO, CS.VERGI_DAIRESI,TBLFATUIRS.FTIRSIP
HAVING (Sum(TBLFATUIRS.BRUTTUTAR - SAT_ISKT - GEN_ISK1T - GEN_ISK2T - GEN_ISK3T)>=$5000) AND TBLFATUIRS.FTIRSIP='1' AND month(tarih)='1' --AND VERGI_NUMARASI='1111111111'
GO

ozcank
Üye
Mesajlar: 859
Kayıt: 28 Nis 2005 04:29

Re: SQL Kümüle Rapor

Mesaj gönderen ozcank » 31 Tem 2019 04:59

Merhaba denizfatihi kardeşim ilgin ve alakan için önce teşekkür ederim. Kodu denedim birçok veri geldi sonuçlar doğru değil
şöyle teyit ediyorum;

Mesela X cari kart
1 ay için - X - 1111111111 Vergi nolu 2 tane fatura bunun RAPOR_KODU5='MERKEZ'
1 ay için - X1 - 1111111111 Vergi nosu aynı 3 fatura RAPOR_KODU5 boş
1 ay için - X2 - 1111111111 Vergi nosu aynı 4 fatura RAPOR_KODU5 boş
ve sorgunun sonucun da X için Fatura sayısı 9 demesi lazım

aynı döngü TCKIMLIKNO için de geçerli. Bu alan da TBLCASABITEK de
SELECT CS.CARI_ISIM, month(tarih) AS 'AY', Sum(TBLFATUIRS.BRUTTUTAR - SAT_ISKT - GEN_ISK1T - GEN_ISK2T - GEN_ISK3T) AS 'KDV_HARIC_TUTAR', Count(TBLFATUIRS.FATIRS_NO) AS 'FATURA_SAYISI', CS.VERGI_NUMARASI, CS.VERGI_DAIRESI
FROM TBLFATUIRS
INNER JOIN TBLCASABIT CS ON CS.CARI_KOD=TBLFATUIRS.CARI_KODU
--LEFT OUTER JOIN TBLCASABIT MC ON MC.VERGI_NUMARASI=CS.VERGI_NUMARASI AND MC.RAPOR_KODU5='MERKEZ'
INNER JOIN TBLCASABITEK ON CS.CARI_KOD=TBLCASABITEK.CARI_KOD
WHERE CS.CARI_KOD = TBLFATUIRS.CARI_KODU AND CS.VERGI_NUMARASI='1111111111'
GROUP BY CS.CARI_ISIM, month(tarih),CS.VERGI_NUMARASI, CS.VERGI_DAIRESI,TBLFATUIRS.FTIRSIP
HAVING (Sum(TBLFATUIRS.BRUTTUTAR - SAT_ISKT - GEN_ISK1T - GEN_ISK2T - GEN_ISK3T)>=$1) AND TBLFATUIRS.FTIRSIP='1' AND month(tarih)='1'
GO
sizin sorgunuzu denedğimde o aya aitmiş gibi bütün faturaları getiriyor.

denizfatihi
Üye
Mesajlar: 236
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: SQL Kümüle Rapor

Mesaj gönderen denizfatihi » 31 Tem 2019 05:09

where şartını aşağıdaki gibi günceller misin

Kod: Tümünü seç

WHERE CS.CARI_KOD = TBLFATUIRS.CARI_KODU AND 
CASE 
WHEN CS.VERGI_NUMARASI is null  THEN TBLCASABITEK.TCKIMLIKNO
ELSE CS.VERGI_NUMARASI

--CS.VERGI_NUMARASI='1111111111'

ikra
Üye
Mesajlar: 864
Kayıt: 28 Nis 2005 12:26
Konum: Simdilik Topragin Üstü

Re: SQL Kümüle Rapor

Mesaj gönderen ikra » 31 Tem 2019 07:26

Case when else yerine coalesce kullanip kodunuzu kisaltabilirsiniz.
kıdemsiz üye

ozcank
Üye
Mesajlar: 859
Kayıt: 28 Nis 2005 04:29

Re: SQL Kümüle Rapor

Mesaj gönderen ozcank » 01 Ağu 2019 08:20

denizfatihi kardeşim yardımların için teşekkür ederim. Yazdığın değişikliği uyguladım şu hatayı verdi;
Msg 4145, Level 15, State 1, Line 15
An expression of non-boolean type specified in a context where a condition is expected, near 'GROUP'.
Güncel Kod;

Kod: Tümünü seç

SELECT CS.CARI_ISIM, month(tarih) AS 'AY', 
Sum(TBLFATUIRS.BRUTTUTAR - SAT_ISKT - GEN_ISK1T - GEN_ISK2T - GEN_ISK3T) AS 'KDV_HARIC_TUTAR', 
Count(TBLFATUIRS.FATIRS_NO) AS 'FATURA_SAYISI', 
CASE 
WHEN CS.VERGI_NUMARASI is null  THEN TBLCASABITEK.TCKIMLIKNO
ELSE CS.VERGI_NUMARASI END AS VERGINO,CS.VERGI_DAIRESI
FROM TBLFATUIRS
INNER JOIN TBLCASABIT CS ON CS.CARI_KOD=TBLFATUIRS.CARI_KODU 
LEFT OUTER JOIN TBLCASABIT MC ON MC.VERGI_NUMARASI=CS.VERGI_NUMARASI AND MC.RAPOR_KODU5='MERKEZ'
INNER JOIN TBLCASABITEK ON CS.CARI_KOD=TBLCASABITEK.CARI_KOD 
--WHERE CS.CARI_KOD = TBLFATUIRS.CARI_KODU '
WHERE CS.CARI_KOD = TBLFATUIRS.CARI_KODU AND
CASE WHEN CS.VERGI_NUMARASI is null  THEN TBLCASABITEK.TCKIMLIKNO
ELSE CS.VERGI_NUMARASI end 
GROUP BY TBLFATUIRS.TARIH,CS.CARI_ISIM,CS.VERGI_NUMARASI,TBLCASABITEK.TCKIMLIKNO, CS.VERGI_DAIRESI,TBLFATUIRS.FTIRSIP
HAVING (Sum(TBLFATUIRS.BRUTTUTAR - SAT_ISKT - GEN_ISK1T - GEN_ISK2T - GEN_ISK3T)>=$5000) AND TBLFATUIRS.FTIRSIP='1' AND month(tarih)='1'
GO



ozcank
Üye
Mesajlar: 859
Kayıt: 28 Nis 2005 04:29

Re: SQL Kümüle Rapor

Mesaj gönderen ozcank » 02 Ağu 2019 03:32

Arkadaşlar Merhaba, Sorguyu buraya kadar getirdim yani CARI_ISIM olmadan hem verginosu hem de tckımlıkno yu duzgun olarak rapor ediyor buraya nasıl cari isim ekleyebilirim hesaplamaya etki etmeden?


ayrı bir sorguda vergi ve tc kimlik leri eşitleyip Cari isim yazdırabilir miyim?

Kod: Tümünü seç

SELECT month(tarih) AS 'AY',
Sum(TBLFATUIRS.BRUTTUTAR - SAT_ISKT - GEN_ISK1T - GEN_ISK2T - GEN_ISK3T) AS 'KDV_HARIC_TUTAR', 
Count(TBLFATUIRS.FATIRS_NO) AS 'FATURA_SAYISI',TBLCASABIT.VERGI_NUMARASI,TBLCASABIT.VERGI_DAIRESI,TBLCASABITEK.TCKIMLIKNO
FROM TBLFATUIRS
INNER JOIN TBLCASABIT ON TBLCASABIT.CARI_KOD=TBLFATUIRS.CARI_KODU 
LEFT OUTER JOIN TBLCASABIT CE ON TBLCASABIT.VERGI_NUMARASI=CE.VERGI_NUMARASI AND CE.RAPOR_KODU5='MERKEZ'
INNER JOIN TBLCASABITEK ON TBLCASABIT.CARI_KOD=TBLCASABITEK.CARI_KOD 
WHERE 1=1 and TBLCASABIT.CARI_KOD = TBLFATUIRS.CARI_KODU 
GROUP BY TBLCASABIT.VERGI_NUMARASI,TBLCASABITEK.TCKIMLIKNO,
month(tarih),TBLCASABIT.VERGI_NUMARASI, TBLCASABIT.VERGI_DAIRESI,TBLFATUIRS.FTIRSIP
HAVING (Sum(TBLFATUIRS.BRUTTUTAR - SAT_ISKT - GEN_ISK1T - GEN_ISK2T - GEN_ISK3T)>=$5000) AND TBLFATUIRS.FTIRSIP='1' AND month(tarih)='1'
ORDER BY month(tarih) ASC
GO

ozcank
Üye
Mesajlar: 859
Kayıt: 28 Nis 2005 04:29

Re: SQL Kümüle Rapor

Mesaj gönderen ozcank » 05 Ağu 2019 10:21

Merhaba, Emeği geçen Arkadaşlara Teşekkür ederim.
Bu sorguda şöyle bir şey var ;
Cari Isım ler farklı ama Vergi Numarası ve Tc Kımlık no lar aynı şöyle

RAPOR_KODU5='MERKEZ' Gruplayıcı oluyor
Carı isim --- Vergi No --- TC KIMLIKNO --- Fatura sayısı --- Rapor_Kodu5
A --- 1111111111 --- Boş --- 2 --- MERKEZ
A1 --- 1111111111 --- Boş --- 3 --- BOŞ
A2 --- 1111111111 --- Boş --- 3 --- BOŞ
A3 --- 1111111111 --- Boş --- 2 --- BOŞ
B --- Boş --- 2222222222 --- 5 --- MERKEZ
B1 --- Boş --- 2222222222 --- 2 --- BOŞ
B2 --- Boş --- 2222222222 --- 2 --- BOŞ
C --- 3333333333 --- --- 10 --- MERKEZ
C1 --- 3333333333 --- --- 5 --- BOŞ

Sonuç şöyle olması gerekiyor;
Carı İsim --- Kımlık No --- Fatura sayısı
A --- 1111111111 --- 10
B --- 2222222222 --- 9
C --- 2222222222 --- 15

ozcank
Üye
Mesajlar: 859
Kayıt: 28 Nis 2005 04:29

Re: SQL Kümüle Rapor

Mesaj gönderen ozcank » 07 Ağu 2019 03:54

Merhaba ; Bir fikri veya önerisi olan var mı ? Nasıl çözebilirim ? Yardımcı olur musunuz?

ertank
Üye
Mesajlar: 1257
Kayıt: 11 Eyl 2015 11:45

Re: SQL Kümüle Rapor

Mesaj gönderen ertank » 08 Ağu 2019 08:52

Merhaba,

Sorunuz Delphi değil daha çok SQL Server ile ilgili. Bu anlamda aşağıdaki forum oldukça tecrübeli SQL Server kullanıcıları içeriyor. Sorunuzu orada da sormanızı tavsiye edebilirim.

https://forums.sqlteam.com

Cevapla