SQL Kümüle Rapor

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

SQL Kümüle Rapor

Mesaj gönderen ozcank »

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: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: SQL Kümüle Rapor

Mesaj gönderen denizfatihi »

Merhaba,

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

iyi çalışmalar,
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: SQL Kümüle Rapor

Mesaj gönderen ozcank »

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: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: SQL Kümüle Rapor

Mesaj gönderen denizfatihi »

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: 925
Kayıt: 28 Nis 2005 05:29

Re: SQL Kümüle Rapor

Mesaj gönderen ozcank »

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: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: SQL Kümüle Rapor

Mesaj gönderen denizfatihi »

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: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: SQL Kümüle Rapor

Mesaj gönderen ikra »

Case when else yerine coalesce kullanip kodunuzu kisaltabilirsiniz.
kıdemsiz üye
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: SQL Kümüle Rapor

Mesaj gönderen ozcank »

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: 925
Kayıt: 28 Nis 2005 05:29

Re: SQL Kümüle Rapor

Mesaj gönderen ozcank »

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: 925
Kayıt: 28 Nis 2005 05:29

Re: SQL Kümüle Rapor

Mesaj gönderen ozcank »

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: 925
Kayıt: 28 Nis 2005 05:29

Re: SQL Kümüle Rapor

Mesaj gönderen ozcank »

Merhaba ; Bir fikri veya önerisi olan var mı ? Nasıl çözebilirim ? Yardımcı olur musunuz?
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: SQL Kümüle Rapor

Mesaj gönderen ertank »

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