maxcoder7
=> SQL Bakiye Alma
(8.10.2015 10:22:25)
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:
[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])
Hakan5434
=> SQL Bakiye Alma
(8.10.2015 10:34:29)
[İşlem Tarihi],
[İşlem No],
[İşlem Türü],
[Borç],
[Alacak],
--------------- Bu kısımdan sonrası içim
(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]) As BAKIYE
şeklinde denermisin
maxcoder7
=> SQL Bakiye Alma
(8.10.2015 10:56:37)
Malesef olmadı.
Hakan5434
=> SQL Bakiye Alma
(8.10.2015 11:29:17)
LG_001_CLCARD AS CL
LG_001_CLCARD =>Tablo olduğu düşünerek
maxcoder7
=> SQL Bakiye Alma
(8.10.2015 11:56:26)
Aynı hatayı aldım.
Hakan5434
=> SQL Bakiye Alma
(8.10.2015 12:04:40)
son yazdığım durum diğer tablolar içinde geçerli onlarada uyguladın mı.
ayrıca sql cümlesinin kedisi nasıl hata mesajı oluyor kısmı anlayamadım. varsa ki hata var diyorsun daha farklı bir hata mesajı dönmeli.
maxcoder7
=> SQL Bakiye Alma
(8.10.2015 12:53:43)
Dediğiniz gibi uyguladım 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. hatasını alıyorum.
Hakan5434
=> SQL Bakiye Alma
(8.10.2015 15:10:38)
quote:
Orijinalden alıntı: maxcoder7 Dediğiniz gibi uyguladım 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. hatasını alıyorum. |
'LV_001_01_CLEKSTRE.DATE_ kolonunu group by a eklemeni istiyor. ve benzer şekilde başka kolonlar içinde isterse yap.
teornek
=> SQL Bakiye Alma
(8.10.2015 20:13:51)
Select ten sonra yazdığın herşeyi group by da yazıp dener misin id gibi
maxcoder7
=> SQL Bakiye Alma
(9.10.2015 17:30:30)
quote:
Orijinalden alıntı: teornek Select ten sonra yazdığın herşeyi group by da yazıp dener misin id gibi |
Merhaba, denedim malesef yine olmadı.
maxcoder7
=> SQL Bakiye Alma
(9.10.2015 17:53:30)
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)
< Resime gitmek için tıklayın >
Bakiyeler NULL olarak gözükmeye başladı.
teornek
=> SQL Bakiye Alma
(9.10.2015 18:04:16)
üstat sanıyorum bu logo programından. logo destek diye bir forum sitesi var orda sql bölümü var üye ol siteye oraya yaz %90 çözerler problemi
maxcoder7
=> SQL Bakiye Alma
(9.10.2015 18:21:41)
quote:
Orijinalden alıntı: teornek üstat sanıyorum bu logo programından. logo destek diye bir forum sitesi var orda sql bölümü var üye ol siteye oraya yaz %90 çözerler problemi |
Aynen öyle. :) Üye oluyorum hemen.
teornek
=> SQL Bakiye Alma
(9.10.2015 23:08:01)
quote:
Orijinalden alıntı: maxcoder7 quote:
Orijinalden alıntı: teornek üstat sanıyorum bu logo programından. logo destek diye bir forum sitesi var orda sql bölümü var üye ol siteye oraya yaz %90 çözerler problemi | Aynen öyle. :) Üye oluyorum hemen. |
Ben çok şey öğrendim orda eminim sizde öğrenirsiniz