Forum

SQL Server Bakiye A...
 
Bildirimler
Hepsini Temizle

SQL Server Bakiye Alma

5 Yazılar
1 Üyeler
0 Likes
1,096 Görüntüleme
(@OrhanDenizKaplan)
Gönderiler: 15
Eminent Member
Konu başlatıcı
 

Merhaba Arkadaşlar,

SQL'de bakiye almak istiyorum, fakat sorgumu çalıştırdığımda aşağıda ki gibi bir hata alıyorum. Hatayı nasıl kapatabilirim.

Sorgum;

SelECT
[ID],
[DATE_],
[Cari Kodu],
[Müşteri Ünvanı],
[Adres1],
[Adres2],
[vergi No],
[Vergi Dairesi],
[İşlem Tarihi],
[İşlem No],
[İşlem Türü],
[Borç],
[Alacak],
[BAKIYE]=(SELECT Sum(G.[DEBIT] - G.[CREDIT]) OVER (ORDER BY G.[DATE_], G.[LOGICALREF]) FROM LV_001_01_CLEKSTRE G INNER JOIN LG_001_CLCARD CL ON CL.LOGICALREF=G.CLIENTREF GROUP BY G.[LOGICALREF])

FROM
(
SELECT
[ID]=CLEKSTRE.LOGICALREF,
[DATE_]=CLEKSTRE.DATE_,
[Cari Kodu]=CLCARD.CODE,
[Müşteri Ünvanı]=CLCARD.DEFINITION_,
[Adres1]=CLCARD.ADDR1,
[Adres2]=CLCARD.ADDR2,
[Vergi No]=CLCARD.TAXNR,
[Vergi Dairesi]=CLCARD.TAXOFFICE,
[İşlem Tarihi]=CLEKSTRE.DATE_,
[İşlem No]=CLEKSTRE.TRANNO,
[İşlem Türü]=CASE WHEN CLEKSTRE.TRCODE=31 AND CLEKSTRE.MODULENR=4 THEN 'Satınalma Faturası'
WHEN CLEKSTRE.TRCODE=34 AND CLEKSTRE.MODULENR=4 THEN 'Alınan Hizmet Faturası'
WHEN CLEKSTRE.TRCODE=36 AND CLEKSTRE.MODULENR=4 THEN 'Satınalma İade Faturası'
WHEN CLEKSTRE.TRCODE=43 AND CLEKSTRE.MODULENR=4 THEN 'Satınalma Fiyat Farkı Faturası'
WHEN CLEKSTRE.TRCODE=56 AND CLEKSTRE.MODULENR=4 THEN 'Müstahsil Makbuzu'
WHEN CLEKSTRE.TRCODE=38 AND CLEKSTRE.MODULENR=4 THEN 'Toptan Satış Faturası'
WHEN CLEKSTRE.TRCODE=37 AND CLEKSTRE.MODULENR=4 THEN 'Perakende Satış Faturası'
WHEN CLEKSTRE.TRCODE=32 AND CLEKSTRE.MODULENR=4 THEN 'Perakende Satış İade Faturası'
WHEN CLEKSTRE.TRCODE=33 AND CLEKSTRE.MODULENR=4 THEN 'Toptan Satış İade Faturası'
WHEN CLEKSTRE.TRCODE=39 AND CLEKSTRE.MODULENR=4 THEN 'Verilen Hizmet Faturası'
WHEN CLEKSTRE.TRCODE=44 AND CLEKSTRE.MODULENR=4 THEN 'Satış Fiyat Farkı Faturası'
WHEN CLEKSTRE.TRCODE=1 AND CLEKSTRE.MODULENR=5 THEN 'Nakit Tahsilat'
WHEN CLEKSTRE.TRCODE=2 AND CLEKSTRE.MODULENR=5 THEN 'Nakit Ödeme'
WHEN CLEKSTRE.TRCODE=3 AND CLEKSTRE.MODULENR=5 THEN 'Borç Dekontu'
WHEN CLEKSTRE.TRCODE=4 AND CLEKSTRE.MODULENR=5 THEN 'Alacak Dekontu'
WHEN CLEKSTRE.TRCODE=5 AND CLEKSTRE.MODULENR=5 THEN 'Virman Fişi'
WHEN CLEKSTRE.TRCODE=14 AND CLEKSTRE.MODULENR=5 THEN 'Açılış Fişi'
WHEN CLEKSTRE.TRCODE=41 AND CLEKSTRE.MODULENR=4 THEN 'Verilen Vade Farkı Faturası'
WHEN CLEKSTRE.TRCODE=42 AND CLEKSTRE.MODULENR=4 THEN 'Alınan Vade Farkı Faturası'
WHEN CLEKSTRE.TRCODE=45 AND CLEKSTRE.MODULENR=5 THEN 'Verilen Serbest Meslek Makbuzu'
WHEN CLEKSTRE.TRCODE=46 AND CLEKSTRE.MODULENR=5 THEN 'Alınan Serbest Meslek Makbuzu'
WHEN CLEKSTRE.TRCODE=70 AND CLEKSTRE.MODULENR=5 THEN 'Kredi Kart Fişi'
WHEN CLEKSTRE.TRCODE=71 AND CLEKSTRE.MODULENR=5 THEN 'Kredi Kart İade Fişi'
WHEN CLEKSTRE.TRCODE=72 AND CLEKSTRE.MODULENR=5 THEN 'Firma Kredi Kart Fişi'
WHEN CLEKSTRE.TRCODE=73 AND CLEKSTRE.MODULENR=5 THEN 'Firma Kredi Kart İade Fişi'
WHEN CLEKSTRE.TRCODE=61 AND CLEKSTRE.MODULENR=6 THEN 'Çek Girişi'
WHEN CLEKSTRE.TRCODE=62 AND CLEKSTRE.MODULENR=6 THEN 'Senet Girişi'
WHEN CLEKSTRE.TRCODE=63 AND CLEKSTRE.MODULENR=6 THEN 'Çek Çıkış'
WHEN CLEKSTRE.TRCODE=64 AND CLEKSTRE.MODULENR=6 THEN 'Senet Çıkış'
WHEN CLEKSTRE.TRCODE=3 AND CLEKSTRE.MODULENR=61 THEN 'Müşteriye İade Edilen Çek'
WHEN CLEKSTRE.TRCODE=1 AND CLEKSTRE.MODULENR=10 THEN 'Kasa Nakit Tahsilat'
WHEN CLEKSTRE.TRCODE=2 AND CLEKSTRE.MODULENR=10 THEN 'Kasa Nakit Ödeme'
WHEN CLEKSTRE.TRCODE=20 AND CLEKSTRE.MODULENR=7 THEN 'Gelen Havale'
WHEN CLEKSTRE.TRCODE=21 AND CLEKSTRE.MODULENR=7 THEN 'Gönderilen Havale'
WHEN CLEKSTRE.TRCODE=81 AND CLEKSTRE.MODULENR=3 THEN 'Alınan Sipariş'
WHEN CLEKSTRE.TRCODE=82 AND CLEKSTRE.MODULENR=3 THEN 'Verilen Sipariş' ELSE 'BOŞ' END,
[Borç]=CLEKSTRE.DEBIT,
[Alacak]=CLEKSTRE.CREDIT
--[BAKIYE]=(SELECT Sum(G.[DEBIT] - G.[CREDIT]) OVER (ORDER BY G.[DATE_], G.[LOGICALREF]) FROM LV_001_01_CLEKSTRE G LEFT JOIN LG_001_CLCARD CL ON CL.LOGICALREF=G.CLIENTREF)

FROM
LV_001_01_CLEKSTRE CLEKSTRE
LEFT OUTER JOIN lg_001_CLCARD CLCARD ON CLCARD.LOGICALREF=CLEKSTRE.CLIENTREF)TEMP GROUP BY [ID],[DATE_],[Cari Kodu],[Müşteri Ünvanı],[Adres1],[Adres2],
[Vergi No],[Vergi Dairesi],[İşlem Tarihi],[İşlem No],[İşlem Türü],[Borç],[Alacak]

--SELECT * FROM LV_001_01_CLEKSTRE

--SELECT Sum([DEBIT] - [CREDIT]) OVER (ORDER BY [DATE_], [LOGICALREF]) AS [BAKIYE] FROM LV_001_01_CLEKSTRE
--(SELECT Sum([DEBIT]) - SUM([CREDIT]) OVER (ORDER BY [DATE_], [LOGICALREF]) AS [BAKIYE] FROM LV_001_01_CLEKSTRE WHERE CLIENTREF=CLCARD.LOGICALREF)

Aldığım Hata:

Msg 8120, Level 16, State 1, Line 15
Column 'LV_001_01_CLEKSTRE.DATE_' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

 
Gönderildi : 08/10/2015 15:08

(@OrhanDenizKaplan)
Gönderiler: 15
Eminent Member
Konu başlatıcı
 

Merhaba kusura bakmayın yanlış yeri yazmışım, ana konuda düzelttim.

Aldığım hata şu şekilde;

Msg 8120, Level 16, State 1, Line 15
Column 'LV_001_01_CLEKSTRE.DATE_' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

 
Gönderildi : 08/10/2015 15:53

(@OrhanDenizKaplan)
Gönderiler: 15
Eminent Member
Konu başlatıcı
 

LV_001_01_CLEKSTRE.DATE Bu alanı group by alanına ekleyin. Benzer hatalar gelirse, group by kısmına alanları yazın, sorgu çalışacaktır.

Tekrar merhaba Yavuz bey, yazdığınız yöntemi denemiştim bu sefer...

SELECT
[ID],
[DATE_],
[Cari Kodu],
[Müşteri Ünvanı],
[Adres1],
[Adres2],
[Vergi No],
[Vergi Dairesi],
[İşlem Tarihi],
[İşlem No],
[İşlem Türü],
[Borç],
[Alacak],
[BAKIYE]=(SELECT Sum(G.[DEBIT] - G.[CREDIT]) OVER (ORDER BY G.[LOGICALREF], G.[DATE_]) FROM LV_001_01_CLEKSTRE G INNER JOIN LG_001_CLCARD CL ON CL.LOGICALREF=G.CLIENTREF GROUP BY G.[LOGICALREF], G.[DATE_],G.[DEBIT],G.[CREDIT] )

FROM
(
SELECT
[ID]=CLEKSTRE.LOGICALREF,
[DATE_]=CLEKSTRE.DATE_,
[Cari Kodu]=CLCARD.CODE,
[Müşteri Ünvanı]=CLCARD.DEFINITION_,
[Adres1]=CLCARD.ADDR1,
[Adres2]=CLCARD.ADDR2,
[Vergi No]=CLCARD.TAXNR,
[Vergi Dairesi]=CLCARD.TAXOFFICE,
[İşlem Tarihi]=CLEKSTRE.DATE_,
[İşlem No]=CLEKSTRE.TRANNO,
[İşlem Türü]=CASE WHEN CLEKSTRE.TRCODE=31 AND CLEKSTRE.MODULENR=4 THEN 'Satınalma Faturası'
WHEN CLEKSTRE.TRCODE=34 AND CLEKSTRE.MODULENR=4 THEN 'Alınan Hizmet Faturası'
WHEN CLEKSTRE.TRCODE=36 AND CLEKSTRE.MODULENR=4 THEN 'Satınalma İade Faturası'
WHEN CLEKSTRE.TRCODE=43 AND CLEKSTRE.MODULENR=4 THEN 'Satınalma Fiyat Farkı Faturası'
WHEN CLEKSTRE.TRCODE=56 AND CLEKSTRE.MODULENR=4 THEN 'Müstahsil Makbuzu'
WHEN CLEKSTRE.TRCODE=38 AND CLEKSTRE.MODULENR=4 THEN 'Toptan Satış Faturası'
WHEN CLEKSTRE.TRCODE=37 AND CLEKSTRE.MODULENR=4 THEN 'Perakende Satış Faturası'
WHEN CLEKSTRE.TRCODE=32 AND CLEKSTRE.MODULENR=4 THEN 'Perakende Satış İade Faturası'
WHEN CLEKSTRE.TRCODE=33 AND CLEKSTRE.MODULENR=4 THEN 'Toptan Satış İade Faturası'
WHEN CLEKSTRE.TRCODE=39 AND CLEKSTRE.MODULENR=4 THEN 'Verilen Hizmet Faturası'
WHEN CLEKSTRE.TRCODE=44 AND CLEKSTRE.MODULENR=4 THEN 'Satış Fiyat Farkı Faturası'
WHEN CLEKSTRE.TRCODE=1 AND CLEKSTRE.MODULENR=5 THEN 'Nakit Tahsilat'
WHEN CLEKSTRE.TRCODE=2 AND CLEKSTRE.MODULENR=5 THEN 'Nakit Ödeme'
WHEN CLEKSTRE.TRCODE=3 AND CLEKSTRE.MODULENR=5 THEN 'Borç Dekontu'
WHEN CLEKSTRE.TRCODE=4 AND CLEKSTRE.MODULENR=5 THEN 'Alacak Dekontu'
WHEN CLEKSTRE.TRCODE=5 AND CLEKSTRE.MODULENR=5 THEN 'Virman Fişi'
WHEN CLEKSTRE.TRCODE=14 AND CLEKSTRE.MODULENR=5 THEN 'Açılış Fişi'
WHEN CLEKSTRE.TRCODE=41 AND CLEKSTRE.MODULENR=4 THEN 'Verilen Vade Farkı Faturası'
WHEN CLEKSTRE.TRCODE=42 AND CLEKSTRE.MODULENR=4 THEN 'Alınan Vade Farkı Faturası'
WHEN CLEKSTRE.TRCODE=45 AND CLEKSTRE.MODULENR=5 THEN 'Verilen Serbest Meslek Makbuzu'
WHEN CLEKSTRE.TRCODE=46 AND CLEKSTRE.MODULENR=5 THEN 'Alınan Serbest Meslek Makbuzu'
WHEN CLEKSTRE.TRCODE=70 AND CLEKSTRE.MODULENR=5 THEN 'Kredi Kart Fişi'
WHEN CLEKSTRE.TRCODE=71 AND CLEKSTRE.MODULENR=5 THEN 'Kredi Kart İade Fişi'
WHEN CLEKSTRE.TRCODE=72 AND CLEKSTRE.MODULENR=5 THEN 'Firma Kredi Kart Fişi'
WHEN CLEKSTRE.TRCODE=73 AND CLEKSTRE.MODULENR=5 THEN 'Firma Kredi Kart İade Fişi'
WHEN CLEKSTRE.TRCODE=61 AND CLEKSTRE.MODULENR=6 THEN 'Çek Girişi'
WHEN CLEKSTRE.TRCODE=62 AND CLEKSTRE.MODULENR=6 THEN 'Senet Girişi'
WHEN CLEKSTRE.TRCODE=63 AND CLEKSTRE.MODULENR=6 THEN 'Çek Çıkış'
WHEN CLEKSTRE.TRCODE=64 AND CLEKSTRE.MODULENR=6 THEN 'Senet Çıkış'
WHEN CLEKSTRE.TRCODE=3 AND CLEKSTRE.MODULENR=61 THEN 'Müşteriye İade Edilen Çek'
WHEN CLEKSTRE.TRCODE=1 AND CLEKSTRE.MODULENR=10 THEN 'Kasa Nakit Tahsilat'
WHEN CLEKSTRE.TRCODE=2 AND CLEKSTRE.MODULENR=10 THEN 'Kasa Nakit Ödeme'
WHEN CLEKSTRE.TRCODE=20 AND CLEKSTRE.MODULENR=7 THEN 'Gelen Havale'
WHEN CLEKSTRE.TRCODE=21 AND CLEKSTRE.MODULENR=7 THEN 'Gönderilen Havale'
WHEN CLEKSTRE.TRCODE=81 AND CLEKSTRE.MODULENR=3 THEN 'Alınan Sipariş'
WHEN CLEKSTRE.TRCODE=82 AND CLEKSTRE.MODULENR=3 THEN 'Verilen Sipariş' ELSE 'BOŞ' END,
[Borç]=CLEKSTRE.DEBIT,
[Alacak]=CLEKSTRE.CREDIT

 

FROM
LV_001_01_CLEKSTRE CLEKSTRE
LEFT OUTER JOIN LG_001_CLCARD CLCARD ON CLCARD.LOGICALREF=CLEKSTRE.CLIENTREF)TEMP GROUP BY [ID],[DATE_],[Cari Kodu],[Müşteri Ünvanı],[Adres1],[Adres2],
[Vergi No],[Vergi Dairesi],[İşlem Tarihi],[İşlem No],[İşlem Türü],[Borç],[Alacak]

 

Sorguyu yazdıktan sonra;

Msg 512, Level 16, State 1, Line 1

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

Şeklinde bir hata alıyorum.

 
Gönderildi : 09/10/2015 19:47

(@OrhanDenizKaplan)
Gönderiler: 15
Eminent Member
Konu başlatıcı
 

Buradaki suqquery'nin 1 den fazla değer döndürdüğünü söylüyor, bir condition ekleyerek bir değer döndürmesini sağlayın diye size bir uyarıda bulunuyor.

 

IF Else şeklin demi? nasıl yapacağım.

 
Gönderildi : 09/10/2015 20:12

(@OrhanDenizKaplan)
Gönderiler: 15
Eminent Member
Konu başlatıcı
 

Select .... from dan sonra Where ile condition yazılıyor, temel seviyede tsql bilginiz olması gerekiyor.

 

Merhaba, 

BAKIYE=(SELECT Sum(G.[DEBIT]) - SUM(G.[CREDIT]) OVER (ORDER BY G.[LOGICALREF], G.[DATE_]) FROM LV_001_01_CLEKSTRE G INNER JOIN  LG_001_CLCARD CL ON CL.LOGICALREF=G.CLIENTREF  where  G.LOGICALREF=CL.LOGICALREF GROUP BY G.[DEBIT],G.[CREDIT],CL.[LOGICALREF],G.DATE_ ,G.LOGICALREF)

[url= http://i.hizliresim.com/V6A0kR.jp g" target="_blank">http://i.hizliresim.com/V6A0kR.jp g"/> [/img][/url]

Bakiyeler NULL olarak gözükmeye başladı.

 
Gönderildi : 09/10/2015 20:47

Paylaş: