Herkese iyi akşamlar
select m8,(m1-m2) fark from kasa
Bu ifadede "fark" alanı negatif ise nasıl sıfır olmasını sağlarım. Biliyorsunuz, bu Delphi'de max(double1-double2,0) ifadesiyle rahatlıkla yapılabilir.
Sql hakında
Selamlar,
Eğer yapmak istediğiniz şey MS-SQL Server'da ise, CASE WHEN ile halledebilirsiniz.
Örnek,
Yukarıdaki syntax tam olmayabilir (şu anda MS-SQL Server'aerişemediğim için test edemedim ancak aynı yapıda daha önce çok kullandım.
Ancak istediğiniz IB/FB Server'da olacak ise bu iş için bir Stored Procedure Yazıp, FOR SELECT şeklinde döngü kurup, bu döngü içerisinde Result Set'i kendiniz kontrollu bir biçimde oluşturmanız gerekir.
Kolay Gelsin
Eğer yapmak istediğiniz şey MS-SQL Server'da ise, CASE WHEN ile halledebilirsiniz.
Örnek,
Kod: Tümünü seç
SELECT M9,
FARK = CASE
WHEN M1 > M2 THEN (SELECT M1-M2)
WHEN M2 >= M1 THEN (SELECT 0)
END
FROM KASA
Ancak istediğiniz IB/FB Server'da olacak ise bu iş için bir Stored Procedure Yazıp, FOR SELECT şeklinde döngü kurup, bu döngü içerisinde Result Set'i kendiniz kontrollu bir biçimde oluşturmanız gerekir.
Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Evet Kuri'nin de dedigi gibi select icinde case ya da if expression kullanılabilen veritabanalrinda bu cok kolay ama interbase ve firebird'de yok saniyorum eger paradoz kullanıyorsanız zaten hic yok. Ama her ikisi icin de su kod isinizi gorur saniyorum....
Fakat burada eger m1 veya m2 alanlari null deger iceriyorsa is null kontrolleri filan da koymak gerekecektir....
Kod: Tümünü seç
select m8,0 fark from kasa where (m1-m2)<=0
union
select m8,(m1-m2) fark from kasa where (m1-m2)>0