sql de karmaşık bir sum işlemi

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
eren2000
Üye
Mesajlar: 126
Kayıt: 26 Haz 2003 06:40
Konum: aksaray
İletişim:

sql de karmaşık bir sum işlemi

Mesaj gönderen eren2000 »

Sadece sorun oldum galiba soru sormaktan başka iş yapmıyorum. Ama sorularımla insanların önünü açmaya çalışıyorum.
Yine bir sorum olacak.
Bir table var. Kullanacağım sahalar şunlar:
sicilno,adsoyad,sontarih,kalantutar,kalangecikme

aynı sicil numaralı kişinin bu tableda birden fazla kaydı var.
Bu olayı sql de halletmeye çalışıyorum.
şöyle bir sql yazdım. Delphi de kod ile çalışıyor. İşlem biraz karmaşık ama.
Yapmak istediğim şu.
Aynı kişinin kalantutar ve kalangecikme değerlerini toplatarak tek satırda yazdırmak.
Yalnız takıldığım yer şurası:
kalangecikme değerleri tabledan alınmayacak. hesapla bulunacak. Bunun formulu şu.
Delphi de şöyle yazılabilir.

kalangecikme:=daysbetween(now,strtodate('01.01.2005'))*(dmsulama.TSabitgecikmefaiz.Value/(30*100));
buradaki 01.01.2005 tarihi yerine bir değişken olmalı ve bu değer tabledaki sontarih değeri olmalı.



SQL satırlarım da şunlar.

s:=floattostr(kalangecikme);

SListe.Sql.Clear;
SListe.Sql.add('select csicilno,adsoyad,sum(kalantutar+('+
s+
'*kalantutar)) kalan from tahakkuk');
SListe.Sql.Add('where tahakkukdonem<>:tahakkukdonem');
SListe.Sql.Add('group by csicilno');
SListe.Close;
SListe.Params[0].Value:=TSabitcalismadonemi.Value;
SListe.Open;



Ben tarih değerini de sql.add komnutunu yazdırırken alıp işlem yaptıramadım.

Ya da daha basit bir yol
İki tarih arasındaki farkı sql de nasıl bulurum. Sontarih fieldım string tipindedir. Bununda sql de tarih tiipine çevrilerek işlem yapılması gerekir.

Teşekkürler.

Mysql 4.1 kullanıyorum. Delphi 6 ve winzeos
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Bence eğer tarih bilgisi tutan bir filedınızı string tipi ile tutmanız yanlış, eğer bu şekilde gözmem lazım diyorsan da CAST veya CONVERT fonksiyonlarını kullanabilirsin tip çevirimi için.

CAST(alan AS datetime)

gibi..
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,

Bende naile hanıma katılıyorum.

SQL ile çözümüde zaten siz yapmışsınız.
Saygı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]
_________________
Cevapla