Group By (Having Sorunu)

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Group By (Having Sorunu)

Mesaj gönderen pro_imaj »

Merhaba,

Aşağıdaki SQL kodunda sadece STI.Chk koduna göre nasıl guruplama yapabilirim acaba (Having alanındaki işlemlerde aynen olması gerekiyor.)
Birtürlü yapamadım.

Kod: Tümünü seç

SELECT STI.KynkEvrakTip, STI.IslemTur, STI.IslemTip, STK.TipKod, STI.Chk,
Sum(STI.Tutar - STI.ToplamIskonto)as Tutar, STI.Tarih,CHK.Unvan1, STI.MalKodu
FROM solar4.FINSAT450.STI STI, solar4.FINSAT450.STK STK, solar4.FINSAT450.CHK CHK
WHERE STK.MalKodu = STI.MalKodu and STI.Chk = CHK.HesapKodu
GROUP BY STI.KynkEvrakTip, STI.IslemTur, STI.IslemTip, STK.TipKod, STI.Chk, STI.Tarih, CHK.Unvan1,STI.MalKodu
HAVING (STI.KynkEvrakTip=1) AND (STI.IslemTur=1) AND (STI.IslemTip=1) AND
(Not(STK.TipKod='FL101')) and (STI.Tarih Between 38353 and 38383 ) and
(STI.Chk Between '   ' and  'ZZZZZZZZZZZZZZZZZZZZZ' ) and (STI.MalKodu Between '     ' and  'ZZZZZZZZZZZZZZZZZZZZZZ') 

Sonuç olarak burada Müşteri koduna göre stok işlemi yapıyorum ama hazırladığım bu kodda aynı müşteri kodunda birkaçtane kayıt oluşuyor.Bunu teke düşürmem gerek.

Not:Group by alanında sadece STI.Chk koymam gerek ama bir türlü bu şekilde havingden kaynaklann bir sorun yüzüne olmuyor.

Saygılarımla
Çalışmalarınızda başarılar.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba,

Arkadaşlar Sorunu çözmüş bulunmaktayım. Şöyleki;

Kod: Tümünü seç

SELECT DISTINCT STI.Chk,Sum(STI.Tutar - STI.ToplamIskonto)as Tutar, CHK.Unvan1
FROM solar4.FINSAT450.STI STI, solar4.FINSAT450.STK STK, solar4.FINSAT450.CHK CHK
WHERE STK.MalKodu = STI.MalKodu and STI.Chk = CHK.HesapKodu and
(STI.KynkEvrakTip=1) AND (STI.IslemTur=1) AND (STI.IslemTip=1) AND
(Not(STK.TipKod='FL101')) and (STI.Tarih Between 38384 and 38411 ) and
(STI.Chk Between '   ' and  'ZZZZZZZZZZZZZZZZZZZZZ' ) and (STI.MalKodu Between '     ' and  'ZZZZZZZZZZZZZZZZZZZZZZ') 
GROUP BY STI.Chk, CHK.Unvan1
Yukarıdaki hatalı koddaki hatam Having kullanmakmış. :) Şaka bir yana having kullanmadan şart cümlelerimi Where bloğuna yerleştirdim Sorun çözülmüş oldu.

Teşekkür ederim.

Saygılarımla
Kolay gelsin. :wink:
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Cevapla