fbpx
Anasayfa » Forum

SQL kodlarıyla bölm...
 

[Çözüldü] SQL kodlarıyla bölme işlemi sorunu  

  RSS
muhammed aktepe
(@muhammedaktepe)
Üye

Üstadlarım 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)

(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.

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
Alıntı
Gönderildi : 29/10/2019 22:58
Vedat Özer
(@vedatozerr)
Üye

Merhaba,

Aşağıdaki gibi deneyebilir misiniz.

 

ISNULL((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) / NULLIF(
CAST(dbo.TBL_KASA_HAREKET.TAKSITSAYISI AS INT),0),0)
AS VADETUTARI

Örnekle ile ;

 

DECLARE @TAKSITSAYI NCHAR(2)='0',@TUTAR DECIMAL(26,2)='1500'

SELECT ISNULL(@TUTAR/NULLIF(CAST(@TAKSITSAYI AS INT),0),0) AS DOGRUSONUC
SELECT @TUTAR/CAST(@TAKSITSAYI AS INT) HATALISONUC
Bu ileti 3 hafta önce Vedat Özer tarafından düzenlendi

حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
vedatozer@outlook.com

CevapAlıntı
Gönderildi : 29/10/2019 23:26
muhammed aktepe
(@muhammedaktepe)
Üye
Gönderen: @vedatozerr

Merhaba,

Aşağıdaki gibi deneyebilir misiniz.

 

ISNULL((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) / NULLIF(
CAST(dbo.TBL_KASA_HAREKET.TAKSITSAYISI AS INT),0),0)
AS VADETUTARI

Örnekle ile ;

 

DECLARE @TAKSITSAYI NCHAR(2)='0',@TUTAR DECIMAL(26,2)='1500'

SELECT ISNULL(@TUTAR/NULLIF(CAST(@TAKSITSAYI AS INT),0),0) AS DOGRUSONUC
SELECT @TUTAR/CAST(@TAKSITSAYI AS INT) HATALISONUC

 

Öncelikle Teşekkür ederim. Kodu denedim. Sonuç değişmedi. Ekran görüntüsü linktedir.

 http://prntscr.com/pptzdl 


CevapAlıntı
Gönderildi : 29/10/2019 23:34
Vedat Özer
(@vedatozerr)
Üye

Merhaba,

Kod bölme işlemi sırasında oluşan hatayı engelliyor , sonuçta taksit olunca bölme işlemi olacak değil mi ?

Taksit olmayan satırlarda bölme işlemi yok yada taksit yok ise 0 olacak , yada dilerseniz örnek verilerden oluşan temp tablo ekleyerek çözüme daha net gidebiliriz. 

 

حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
vedatozer@outlook.com

CevapAlıntı
Gönderildi : 29/10/2019 23:39
muhammed aktepe
(@muhammedaktepe)
Üye

Kasa Hareket Tablomun yapısı 

 http://prntscr.com/ppu35k 


CevapAlıntı
Gönderildi : 29/10/2019 23:42
Vedat Özer
(@vedatozerr)
Üye

Merhaba,

Rapordan nasıl bir sonuç bekliyorsunuz, sonuç halini excel de veya resim olarak paylaşabilir misiniz. Bu tür konularda tablonun resmi yerine direk bu kısma yazarsanız tablonun içine veri ekleyip sonucunu test etmek daha kolay olur.

 

 

حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
vedatozer@outlook.com

CevapAlıntı
Gönderildi : 29/10/2019 23:48
muhammed aktepe
(@muhammedaktepe)
Üye

TBL_KASA_HAREKET Tablomun SQL Kod Yapısı

 

CREATE TABLE [dbo].[TBL_KASA_HAREKET](
[ID] [int] IDENTITY(1,1) NOT NULL,
[KASAKODU] [varchar](10) NULL,
[FISNO] [varchar](50) NULL,
[MAKBUZNO] [varchar](50) NULL,
[ISLEMTURU] [int] NULL,
[TARIH] [date] NULL,
[GCKODU] [varchar](2) NULL,
[TIPI] [varchar](20) NULL,
[NETTUTAR] [decimal](26, 2) NULL,
[PESINAT] [decimal](26, 2) NULL,
[GENELTUTAR] [decimal](26, 2) NULL,
[TAKSITVARMI] [bit] NULL,
[TAKSITSAYISI] [nchar](2) NULL,
[TAKSITODEME] [bit] NULL,
[CARIKODU] [varchar](50) NULL,
[BILGI] [varchar](max) NULL,
[TAKSITACIKLAMA] [varchar](50) NULL,
[FIRMAID] [int] NULL,
[SAVEUSER] [int] NULL,
[SAVEDATE] [datetime] NULL,
[EDITUSER] [int] NULL,
[EDITDATE] [datetime] NULL,
CONSTRAINT [PK_TBL_KASA_HAREKET_1] PRIMARY KEY CLUSTERED
([ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[TBL_KASA_HAREKET] ADD CONSTRAINT [DF_TBL_KASA_HAREKET_TAKSITVARMI] DEFAULT ('False') FOR [TAKSITVARMI]
GO
ALTER TABLE [dbo].[TBL_KASA_HAREKET] ADD CONSTRAINT [DF_TBL_KASA_HAREKET_TAKSITSAYISI] DEFAULT ((0)) FOR [TAKSITSAYISI]
GO
ALTER TABLE [dbo].[TBL_KASA_HAREKET] ADD CONSTRAINT [DF_TBL_KASA_HAREKET_TAKSITODEME] DEFAULT ('False') FOR [TAKSITODEME]
GO
ALTER TABLE [dbo].[TBL_KASA_HAREKET] ADD CONSTRAINT [DF_TBL_KASA_HAREKET_SAVEUSER] DEFAULT ((-1)) FOR [SAVEUSER]
GO
ALTER TABLE [dbo].[TBL_KASA_HAREKET] ADD CONSTRAINT [DF_TBL_KASA_HAREKET_SAVEDATE] DEFAULT (getdate()) FOR [SAVEDATE]
GO
ALTER TABLE [dbo].[TBL_KASA_HAREKET] ADD CONSTRAINT [DF_TBL_KASA_HAREKET_EDITUSER] DEFAULT ((-1)) FOR [EDITUSER]
GO
ALTER TABLE [dbo].[TBL_KASA_HAREKET] ADD CONSTRAINT [DF_TBL_KASA_HAREKET_EDITDATE] DEFAULT (getdate()) FOR [EDITDATE]
GO

 

 

CevapAlıntı
Gönderildi : 29/10/2019 23:50
Vedat Özer
(@vedatozerr)
Üye

Muhammed bey,

Sorgudan nasıl bir sonuç çıkmasını bekliyorsunuz onunda resmini paylaşabilir misiniz. İlk sorunuzda bölme işlemi sorunu ortadan kalktı , sanırım istediğiniz başka bir şey daha var yada kurgulamada başka ek parametrik değer var.

 

حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
vedatozer@outlook.com

CevapAlıntı
Gönderildi : 30/10/2019 08:58
muhammed aktepe
(@muhammedaktepe)
Üye

@vedatozerr

İlk sorun halen devam ediyor. Verdiğim Create table kodlarını SQL'e yükleyiniz. Sonrasında ilk verdiğim SQL kodlarını ilgili tablodan veri çekerek İşlem yaptırabilirsiniz.

CevapAlıntı
Gönderildi : 30/10/2019 19:30
Vedat Özer
(@vedatozerr)
Üye

Merhaba,

Ben geçiçi tablo oluşturdum



USE tempdb

If(OBJECT_ID('tempdb..#HAREKET') Is Not Null)
Begin
Drop Table #HAREKET
End

CREATE TABLE #HAREKET
(
TAKSITSAYISI CHAR (2),
GIRIS DECIMAL(26,2),
CIKIS DECIMAL(26,2),
BAKIYE DECIMAL(26,2),
PESINAT DECIMAL(26,2),
GENELTOPLAM DECIMAL(26,2)
)
INSERT INTO #HAREKET
VALUES
('0',NULL,'0',NULL,NULL,NULL),
('0',NULL,'0',NULL,NULL,NULL),
('0','0',NULL,NULL,NULL,NULL),
('0',NULL,'0',NULL,NULL,NULL),
('0',NULL,'0',NULL,NULL,NULL),
('0','0',NULL,NULL,NULL,NULL),
('0','0',NULL,NULL,NULL,NULL),
('2','250','0',NULL,NULL,NULL),
('2','250','0',NULL,NULL,NULL)

SELECT *,ISNULL((ISNULL(GIRIS,0)-ISNULL(CIKIS,0))/NULLIF(CAST(TAKSITSAYISI AS INT),0),0) TUTAR
FROM #HAREKET

حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
vedatozer@outlook.com

CevapAlıntı
Gönderildi : 30/10/2019 23:04
Hakan Uzuner
(@hakanuzuner)
Üye Yönetici

Merhaba,

Konu biraz danışmanlığa dönmüş sanki?

Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

CevapAlıntı
Gönderildi : 03/11/2019 14:12
Vedat Özer
(@vedatozerr)
Üye

Merhaba

Ben elimden geldiğince arkadaşın sorununa çözüm bulmaya çalıştım.

 

حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
vedatozer@outlook.com

CevapAlıntı
Gönderildi : 03/11/2019 15:54
Hakan Uzuner
(@hakanuzuner)
Üye Yönetici

Yok siz iyi niyetlisiniz ama soru soran kişide de aynı durum söz konusu olmalı. Danışmanlık ile çözülecek konular forum üzerinden çözülür ise forum amacına hizmet etmez. Bu durumda herkes her işini foruma sorar ve birilerinin onun için çalışmasını ister. Forumun mantığında siz yapabileceğiniz her şeyi yapıp takıldığınız "noktayı" sorarsınız komple projeyi değil.

Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

CevapAlıntı
Gönderildi : 03/11/2019 17:30
muhammed aktepe
(@muhammedaktepe)
Üye
Gönderen: @hakanuzuner

Yok siz iyi niyetlisiniz ama soru soran kişide de aynı durum söz konusu olmalı. Danışmanlık ile çözülecek konular forum üzerinden çözülür ise forum amacına hizmet etmez. Bu durumda herkes her işini foruma sorar ve birilerinin onun için çalışmasını ister. Forumun mantığında siz yapabileceğiniz her şeyi yapıp takıldığınız "noktayı" sorarsınız komple projeyi değil.

Konu içeriğini baştan okumanızı tavsiye ederim. Herşey en başta belirtilmiştir.

Neyse ki sorunu hallettim.

CevapAlıntı
Gönderildi : 03/11/2019 18:30
Hakan Uzuner
(@hakanuzuner)
Üye Yönetici

Bende baştan okudum, soru süper başlamış, belirli bir bölümü olarak sonrası efsane. Eğer çözdü iseniz sorununuzun çözüldüğü bilgisini keşke paylaşa ve forumun üst bölümündeki "Çözüldü" şeklinde işaretleseydiniz keşke. Bu sayede başkaları da yararlanır.

Yok siz sorunu değerli forum üyemizin yardımları ile değil kendiniz çözdü iseniz yine nasıl çözdüğünüzü paylaşırsanız sektörde bundan yararlansın.

Teşekkürler.

Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

CevapAlıntı
Gönderildi : 03/11/2019 21:54
Vedat Özer beğendi
Paylaş:

Lütfen Giriş yap yada Kayıt ol