SQL-92 Standartlarında SUM içinde IF kullanımı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

SQL-92 Standartlarında SUM içinde IF kullanımı

Mesaj gönderen vkamadan »

Merhaba,
sqlMemTable bilşenini kullanıyorum, fakat şarta bağlı toplam almak istiyorum örneğin MySQL de

Kod: Tümünü seç

select sum(IF(ba="B",tutar , -tutar)) as bakiye from hareket group by kod
gibi kullanım yapabiliyordum, sqlMemtable nin yardımında sql-92 syntax kullandığı yazıyor nette bakındım biraz IF THEN ELSe END IF şeklinde bir kullanım göstermiş ama uygulayamadım hakkında bilgi sahibi olan arkadaşlardan yardım bekliyorum.
Kolay gelsin.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

MY sqL de bilemiyorum ama MSSql de

Kod: Tümünü seç

select sum(case gircik when 'g' then doviztut else -1 * doviztut end) from tablomkasa 
sonuç bakiye dir.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

conari yazdı:MY sqL de bilemiyorum ama MSSql de

Kod: Tümünü seç

select sum(case gircik when 'g' then doviztut else -1 * doviztut end) from tablomkasa 
sonuç bakiye dir.
My SQL de yukarıda verdiğim gibi sonucu zaten alabiliyorum benim amacım SQL-92 Yazım standartlarında bu sorguyu nasıl yazabilirim, kullandığım sanal tablo sorgusu yapabilen TSQlMemQuery nesensi SQL-92 yi destekliyormuş bu sebepten bana bu kurgunun SQL-92 ye uyarlanmış şekli gerekiyor.Bu arada verdiğiniz şekildede çalışmadı.
Teşekkürler.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

Sub-Query destekliyorsa,
Çok maliyetli bir yöntem olacak ama;

Kod: Tümünü seç

Select Distinct kod, ((Select Sum(doviztut) from tablomkasa where gircik = 'g' and kod = tk.kod) - (Select Sum(doviztut) from tablomkasa where gircik <>'g' and kod =tk.kod)) as toplam from tablomkasa tk 
edit: tablo ve alan isimlerini yukarıdaki sqllerin karışımı yapmışım kusura bakmayın ama anlaşılıyor herhalde
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Hoca çalışmaması içi bir neden yok 2000 ve 2005 de bu şekilde kullanıyorum.

Dediğin gibi belge 92 de desteklenmediğinden çalışmıyor olabilir.

Kod: Tümünü seç

select sum(case BA when 'B' then TUTAR else -1 * TUTAR end) from  
hareket
Sizde bu şekilde çalışması lazım.

Ama dediğim(niz) gibi 92 belki desteklemiyordur.
Bu arada ordaki çift tırnak da ne anlamadım. :?: :?:
[/code]
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

undefined yazdı:Sub-Query destekliyorsa,
Çok maliyetli bir yöntem olacak ama;

Kod: Tümünü seç

Select Distinct kod, ((Select Sum(doviztut) from tablomkasa where gircik = 'g' and kod = tk.kod) - (Select Sum(doviztut) from tablomkasa where gircik <>'g' and kod =tk.kod)) as toplam from tablomkasa tk 
edit: tablo ve alan isimlerini yukarıdaki sqllerin karışımı yapmışım kusura bakmayın ama anlaşılıyor herhalde
Maalesef Sub Query desteği de yokmuş ,
ayrıca @conari SQL-92 desteklemiyormuş case when ifadelerini,

Sonuca ulaştım ama SQL tek bir cümleyle olmadı dataset e eklediğim CalculatedField lerle tekrar tekrar hesaplama yaptım.
Teşekkürler.
Volkan KAMADAN
www.polisoft.com.tr
Cevapla