SQL kodlarıyla bölme işlemi sorunu

mcmillian

Kilopat
Katılım
14 Nisan 2014
Mesajlar
470
Çözümler
7
Arkadaşlar yapmış olduğum projemin belli bir bölümün SQL kodlarını sizlerle paylaşıyorum.

Yapmak istediğim şu;

Genel Toplam Sütununa gelen değeri Taksit Sayısına Bölüp farklı bir Sütunda Sonucu Göstertmek İstiyorum?

Alt kısımdaki Sorguyu Eklediğimde hata alıyorum.
Taksit Sayısı Kolonu nchar(2), Parasal Değer Taşıyan Kolonlar decimal(26, 2)

SQL:
(CASE WHEN dbo.TBL_KASA_HAREKET.GCKODU = 'G' THEN NETTUTAR ELSE 0 END) - (CASE WHEN dbo.TBL_KASA_HAREKET.GCKODU = 'C' THEN NETTUTAR ELSE 0 END) / dbo.TBL_KASA_HAREKET.TAKSITSAYISI AS VADETUTARI

Divide by zero error encountered.


SQL:
SELECT
dbo.TBL_KASA_HAREKET.TAKSITSAYISI,
(CASE WHEN dbo.TBL_KASA_HAREKET.GCKODU = 'G' THEN NETTUTAR ELSE 0 END) AS GIRIS,
(CASE WHEN dbo.TBL_KASA_HAREKET.GCKODU = 'C' THEN NETTUTAR ELSE 0 END) AS CIKIS,
(CASE WHEN dbo.TBL_KASA_HAREKET.GCKODU = 'G' THEN NETTUTAR ELSE 0 END) - (CASE WHEN dbo.TBL_KASA_HAREKET.GCKODU = 'C' THEN NETTUTAR ELSE 0 END) AS BAKIYE,
dbo.TBL_KASA_HAREKET.PESINAT,
(CASE WHEN dbo.TBL_KASA_HAREKET.GCKODU = 'G' THEN NETTUTAR ELSE 0 END) - (CASE WHEN dbo.TBL_KASA_HAREKET.GCKODU = 'C' THEN NETTUTAR ELSE 0 END) - dbo.TBL_KASA_HAREKET.PESINAT AS GENELTOPLAM,
(CASE WHEN dbo.TBL_KASA_HAREKET.GCKODU = 'G' THEN NETTUTAR ELSE 0 END) - (CASE WHEN dbo.TBL_KASA_HAREKET.GCKODU = 'C' THEN NETTUTAR ELSE 0 END) / dbo.TBL_KASA_HAREKET.TAKSITSAYISI AS VADETUTARI
FROM
dbo.TBL_KASA INNER JOIN
dbo.TBL_KASA_HAREKET ON dbo.TBL_KASA.KODU = dbo.TBL_KASA_HAREKET.KASAKODU
 
Neden uygulama katmaninda hesaplamayi yapip sadece sonucu SQL e yazmak yerine boyle bir sey yapiyorsun? Finansal veriyi DB tarafinda islemek dogru degil ustelik.
 
Dostum ilk öncelikle almış olduğun hata sıfıra bölme hatası, fakat her şeyden önce taksit sayısını neden nchar bir veri tipinde tutuyorsun ? ilk önce o alanı bir numeric veri tipine dönüştür. Sonrasın da taksit sayısının 0 olmadığını kontrol et.
 
Dostum ilk öncelikle almış olduğun hata sıfıra bölme hatası, fakat her şeyden önce taksit sayısını neden nchar bir veri tipinde tutuyorsun ? ilk önce o alanı bir numeric veri tipine dönüştür. Sonrasın da taksit sayısının 0 olmadığını kontrol et.

Verdiğin bilgiyle hata yaptığımı farkettim. INTEGER'a çevirdiğimde Bölme işlemini doğru yaptı. Çok teşekkürler.
 
Son düzenleme:
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Geri
Yukarı