Forum
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.
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.
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.
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.
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ı.