SQL veri sorgusu

Mehmet Sait

Altın Üye
Katılım
19 Ekim 2009
Mesajlar
840
Excel Vers. ve Dili
Office 2016 TR
Altın Üyelik Bitiş Tarihi
08-09-2028
Merhabalar,

Netsis SQL İki ayrı tablodan veri çağırmak istiyorum. TBLKASA tablosunda KSMAS_NAME,KSSONDEV_T,KSSONDEV_DOVIZ, olmadığından TBLKASAMAS tablosundan eklemem gerekiyor.


SELECT
A.KSMAS_KOD,A.TUTAR,B.KSMAS_NAME,B.KSSONDEV_T,B.KSSONDEV_DOVIZ,
(CASE WHEN(SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END))< 0 THEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END)) ELSE 0 END) , (CASE WHEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END)) > 0 THEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END))ELSE 0 END) ,
(CASE WHEN(SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END))< 0 THEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END)) ELSE 0 END) , (CASE WHEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END)) > 0 THEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END))ELSE 0 END)
FROM
TBLKASA A,TBLKASAMAS B
WHERE
TARIH BETWEEN '2012-01-01' AND '2012-12-31'
GROUP BY
B.KSMAS_NAME,
ORDER BY
b.ksmas_kod ASC


veriyi sorguladığımızda aşağıdaki gibi gelmesi için ne yapmamız gerek ?

KSMAS_KOD KSMAS_NAME KSSONDEV_T KSSONDEV_DOVIZ TUTAR
00 TL KASA
01 USD KASA
02 EURO KASA
POS POS KASA
 
Katılım
13 Aralık 2007
Mesajlar
96
Excel Vers. ve Dili
excel 2002
Siz isteğinizi bildirdiniz fakat vergiyi sorgulattığınızda ne geliyor onu söylermisiniz. aşşağıdaki gibi örnek verebilirmisiniz.Hata varsa iki tablo birleşmesinden kaynaklı olur. INNER JOIN kullanman gerekir veya iç içe SELECT kullanman gerekecek Siz onları söyleyin. Durum dahada netleşir.
KSMAS_KOD KSMAS_NAME KSSONDEV_T KSSONDEV_DOVIZ TUTAR
00 TL KASA
01 USD KASA
02 EURO KASA
POS POS KASA
 
Katılım
13 Aralık 2007
Mesajlar
96
Excel Vers. ve Dili
excel 2002
Başka yerdede sormuşsun ben düzeltim sorguyu aşşağıdaki gibi dene iç içe SELECT Kullandım

aşagıdaki koda TBLKASAMAS tablosundan KSMAS_NAME sutununu ekletmek için ne yapmalıyız?

SELECT
A.KSMAS_KOD,
(CASE WHEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END))> 0 THEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END))ELSE 0 END) Doviz_miktar,
(CASE WHEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END)) > 0 THEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END))ELSE 0 END) BAKÝYE,
(SELECT top 1 KSMAS_NAME FROM TBLKASAMAS ORDER BY KSMAS_NAME DESC) AS [KSMAS_NAME]
FROM
TBLKASA A
WHERE
TARIH BETWEEN '2012-01-01' AND '2012-12-31'
GROUP BY
A.KSMAS_KOD
ORDER BY
A.KSMAS_KOD ASC
 

Mehmet Sait

Altın Üye
Katılım
19 Ekim 2009
Mesajlar
840
Excel Vers. ve Dili
Office 2016 TR
Altın Üyelik Bitiş Tarihi
08-09-2028
Siz isteğinizi bildirdiniz fakat vergiyi sorgulattığınızda ne geliyor onu söylermisiniz. aşşağıdaki gibi örnek verebilirmisiniz.Hata varsa iki tablo birleşmesinden kaynaklı olur. INNER JOIN kullanman gerekir veya iç içe SELECT kullanman gerekecek Siz onları söyleyin. Durum dahada netleşir.
KSMAS_KOD KSMAS_NAME KSSONDEV_T KSSONDEV_DOVIZ TUTAR
00 TL KASA
01 USD KASA
02 EURO KASA
POS POS KASA
Hasan Bey , örnek dosya ekledim.
 

Ekli dosyalar

Katılım
13 Aralık 2007
Mesajlar
96
Excel Vers. ve Dili
excel 2002
Ben ikinciye Cevabını yazdım dediğim gibi iki tablo birleşmesinden kaynaklı hata INNER JOIN veya iç içe SELECT kullanarak çözülür.Yazdığım Sorguyu bir dene verilen hata var ise söylermisini.
 

Mehmet Sait

Altın Üye
Katılım
19 Ekim 2009
Mesajlar
840
Excel Vers. ve Dili
Office 2016 TR
Altın Üyelik Bitiş Tarihi
08-09-2028
Başka yerdede sormuşsun ben düzeltim sorguyu aşşağıdaki gibi dene iç içe SELECT Kullandım

aşagıdaki koda TBLKASAMAS tablosundan KSMAS_NAME sutununu ekletmek için ne yapmalıyız?

SELECT
A.KSMAS_KOD,
(CASE WHEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END))> 0 THEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END))ELSE 0 END) Doviz_miktar,
(CASE WHEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END)) > 0 THEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END))ELSE 0 END) BAKÝYE,
(SELECT top 1 KSMAS_NAME FROM TBLKASAMAS ORDER BY KSMAS_NAME DESC) AS [KSMAS_NAME]
FROM
TBLKASA A
WHERE
TARIH BETWEEN '2012-01-01' AND '2012-12-31'
GROUP BY
A.KSMAS_KOD
ORDER BY
A.KSMAS_KOD ASC

sorguyu denedim çalışıyor ancak ksmas_kod 00 tlkasası iken karşısına usd kasa getiriyor ve tutara devir eklenmeden geliyor.

gelen sonuç :

ksmas_kod - döviz_miktar - bakiye - ksmas_name şeklinde geliyor


ksmas_kod - ksmas_name döviz_miktar - bakiye şeklinde değiştirilebilir mi ?


ksmas_kod 00 tl kasa
ksmas_kod 01 usd kasa
ksmas_kod 02 euro kasa
ksmas_kod pos pos kasa
 

Mehmet Sait

Altın Üye
Katılım
19 Ekim 2009
Mesajlar
840
Excel Vers. ve Dili
Office 2016 TR
Altın Üyelik Bitiş Tarihi
08-09-2028
Sorgu deneme ekranı
 

Ekli dosyalar

Katılım
13 Aralık 2007
Mesajlar
96
Excel Vers. ve Dili
excel 2002
Tek Sorun o Olsun Kolay
SELECT
A.KSMAS_KOD,(SELECT top 1 KSMAS_NAME FROM TBLKASAMAS ORDER BY KSMAS_NAME DESC) AS [KSMAS_NAME],
(CASE WHEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END))> 0 THEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END))ELSE 0 END) Doviz_miktar,
(CASE WHEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END)) > 0 THEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END))ELSE 0 END) BAK&Yacute;YE,
FROM
TBLKASA A
WHERE
TARIH BETWEEN '2012-01-01' AND '2012-12-31'
GROUP BY
A.KSMAS_KOD
ORDER BY
A.KSMAS_KOD ASC
 

Mehmet Sait

Altın Üye
Katılım
19 Ekim 2009
Mesajlar
840
Excel Vers. ve Dili
Office 2016 TR
Altın Üyelik Bitiş Tarihi
08-09-2028
tek sorun o olsun kolay
select
a.ksmas_kod,(select top 1 ksmas_name from tblkasamas order by ksmas_name desc) as [ksmas_name],
(case when (sum(case when io='g' then a.doviztut else 0 end)-sum(case when io='c' then a.doviztut else 0 end))> 0 then (sum(case when io='g' then a.doviztut else 0 end)-sum(case when io='c' then a.doviztut else 0 end))else 0 end) doviz_miktar,
(case when (sum(case when io='g' then a.tutar else 0 end)-sum(case when io='c' then a.tutar else 0 end)) > 0 then (sum(case when io='g' then a.tutar else 0 end)-sum(case when io='c' then a.tutar else 0 end))else 0 end) bakýye,
from
tblkasa a
where
tarıh between '2012-01-01' and '2012-12-31'
group by
a.ksmas_kod
order by
a.ksmas_kod asc
hata verdi
 

Ekli dosyalar

Katılım
13 Aralık 2007
Mesajlar
96
Excel Vers. ve Dili
excel 2002
Birde sana şunu söyleyim DUNYA tabloda Bakiye döndürmeli ondan kaynaklı USD kasa verir Biz sorguyu kullanırken iki tablo arasında ilişkilendirme yapmamız gerekir 2 tabloda aynı olan ne var onu eşitlememiz lazım
SELECT top 1 KSMAS_NAME FROM TBLKASAMAS WHERE (KSMAS_KOD=A.KSMAS_KOD)ORDER BY KSMAS_NAME DESC) AS [KSMAS_NAME],

Bu şekilde değiştirmen gerekecek Yalnız KSMAS_KOD ilk tablodakiyle ikinci Tablodakinin yazımı farklıysa onu değiştirirsen iyi olur
 

Mehmet Sait

Altın Üye
Katılım
19 Ekim 2009
Mesajlar
840
Excel Vers. ve Dili
Office 2016 TR
Altın Üyelik Bitiş Tarihi
08-09-2028
birde sana şunu söyleyim dunya tabloda bakiye döndürmeli ondan kaynaklı usd kasa verir biz sorguyu kullanırken iki tablo arasında ilişkilendirme yapmamız gerekir 2 tabloda aynı olan ne var onu eşitlememiz lazım
select top 1 ksmas_name from tblkasamas where (ksmas_kod=a.ksmas_kod)order by ksmas_name desc) as [ksmas_name],

bu şekilde değiştirmen gerekecek yalnız ksmas_kod ilk tablodakiyle ikinci tablodakinin yazımı farklıysa onu değiştirirsen iyi olur
ksmas_kod her iki tabloda var
 

Mehmet Sait

Altın Üye
Katılım
19 Ekim 2009
Mesajlar
840
Excel Vers. ve Dili
Office 2016 TR
Altın Üyelik Bitiş Tarihi
08-09-2028
Hasan Bey,

Sizi çok yordum kusuruma bakmayın.

örnek bir kodlama belki buradan yola çıkarak sorunu düzeltebiliriz.

Bankalar Borç Alacak durumu :


SELECT
A.NETHESKODU,
B.ACIKLAMA,
SUM(
CASE WHEN BA='B' THEN
A.TUTAR
ELSE 0 END) BORC,
SUM(
CASE WHEN BA='A' THEN
A.TUTAR
ELSE 0 END) ALACAK,
(CASE WHEN (
SUM(
CASE WHEN BA='B' THEN
A.TUTAR
ELSE 0 END) -
SUM(
CASE WHEN BA='A' THEN
A.TUTAR
ELSE 0 END)
)> 0 THEN
(SUM(
CASE WHEN BA='B' THEN
A.TUTAR
ELSE 0 END) -
SUM(
CASE WHEN BA='A' THEN
A.TUTAR
ELSE 0 END))
ELSE 0 END) BORC_BAK,
(CASE WHEN (
SUM(
CASE WHEN BA='B' THEN
A.TUTAR
ELSE 0 END) -
SUM(
CASE WHEN BA='A' THEN
A.TUTAR
ELSE 0 END)) < 0 THEN (
SUM(
CASE WHEN BA='B' THEN
A.TUTAR
ELSE 0 END) -
SUM(
CASE WHEN BA='A' THEN
A.TUTAR
ELSE 0 END))
ELSE 0 END) ALAC_BAK
FROM
TBLBNKHESTRA A LEFT OUTER JOIN TBLBNKHESSABIT B ON (A.NETHESKODU=B.NETHESKODU)
WHERE
B.HESAPTIPI=0 AND TARIH BETWEEN '2006-01-01' AND '2007-12-31'
GROUP BY
A.NETHESKODU,B.ACIKLAMA
ORDER BY
A.NETHESKODU ASC
 
Katılım
13 Aralık 2007
Mesajlar
96
Excel Vers. ve Dili
excel 2002
Size 2 adet sorgu veriyorum sorgular eğer A.KSMAS_KOD ile B.KSMAS_KOD eşitse birbirine sorgu doğru çalışır.

SELECT
A.KSMAS_KOD,A.TUTAR,B.KSMAS_NAME,B.KSSONDEV_T,B.KS SONDEV_DOVIZ,
(CASE WHEN(SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END))< 0 THEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END)) ELSE 0 END) , (CASE WHEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END)) > 0 THEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END))ELSE 0 END) ,
(CASE WHEN(SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END))< 0 THEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END)) ELSE 0 END) , (CASE WHEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END)) > 0 THEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END))ELSE 0 END)
FROM
TBLKASA A LEFT OUTER JOIN TBLKASAMAS B ON (A.KSMAS_KOD=B.KSMAS_KOD)
WHERE
TARIH BETWEEN '2012-01-01' AND '2012-12-31'
GROUP BY
B.KSMAS_NAME,
ORDER BY
b.ksmas_kod ASC
 
Katılım
13 Aralık 2007
Mesajlar
96
Excel Vers. ve Dili
excel 2002
Buda ikinci sorgu ikiside aynı yola çıkar
SELECT
A.KSMAS_KOD,
(SELECT top 1 KSMAS_NAME FROM TBLKASAMAS WHERE A.KSMAS_KOD=B.KSMAS_KOD) ORDER BY KSMAS_NAME DESC) AS [KSMAS_NAME],
(CASE WHEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END))> 0 THEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END))ELSE 0 END) Doviz_miktar,
(CASE WHEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END)) > 0 THEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END))ELSE 0 END) BAKÝYE
FROM
TBLKASA A
WHERE
TARIH BETWEEN '2012-01-01' AND '2012-12-31'
GROUP BY
A.KSMAS_KOD
ORDER BY
A.KSMAS_KOD ASC
 
Katılım
13 Aralık 2007
Mesajlar
96
Excel Vers. ve Dili
excel 2002
Eşit olmaz ise sorgu hata verir çünkü iki tabloyu birleştirdikten sonra sorgulamada iki tabloyu döndürmek için ipucu gerekir.
 

Mehmet Sait

Altın Üye
Katılım
19 Ekim 2009
Mesajlar
840
Excel Vers. ve Dili
Office 2016 TR
Altın Üyelik Bitiş Tarihi
08-09-2028
Eşit olmaz ise sorgu hata verir çünkü iki tabloyu birleştirdikten sonra sorgulamada iki tabloyu döndürmek için ipucu gerekir.
Göstermiş olduğunuz gayret,uğraş ve zahmetiniz için teşekkür ederim. Ancak verdiğiniz son iki sorgu da hata verdi.

Baya uğraşıdan sonra şu kodu çalıştırabildim ama sorgu ksmas_name ye göre toplam değilde , çok uzun çıkıyor ilk tarih ve son tarih arasında ki tüm veriler geliyor.

SELECT
A.KSMAS_KOD,B.KSMAS_NAME,A.TUTAR,B.KSSONDEV_T,B.KSSONDEV_DOVIZ,
(CASE WHEN(SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END))< 0 THEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END)) ELSE 0 END) , (CASE WHEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END)) > 0 THEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END))ELSE 0 END) ,
(CASE WHEN(SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END))< 0 THEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END)) ELSE 0 END) , (CASE WHEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END)) > 0 THEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END))ELSE 0 END)
FROM
TBLKASA A JOIN TBLKASAMAS B ON (A.ksmas_kod=B.ksmas_kod)
GROUP BY
a.ksmas_kod,A.TUTAR,B.KSMAS_NAME,B.KSSONDEV_T,B.KSSONDEV_DOVIZ
ORDER BY
A.tutar ASC
 
Katılım
13 Aralık 2007
Mesajlar
96
Excel Vers. ve Dili
excel 2002
Cevaben

Slm Anlaşılan İki tabloyu birleştirecek birim bulamadık. Yeni bir alan ismi yaratarak tek tablodanda gidebilirsin. Aşşağıdakini bir dene

SELECT
A.KSMAS_KOD,
CASE
WHEN A.KSMAS_KOD ='00' THEN 'TL KASA'
WHEN A.KSMAS_KOD ='01' THEN 'USD KASA'
WHEN A.KSMAS_KOD ='02' THEN 'EURO KASA'
WHEN A.KSMAS_KOD ='POS' THEN 'POS KASA'
END AS [A.KSMAS_KOD],

(CASE WHEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END))> 0 THEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END))ELSE 0 END) Doviz_miktar,
(CASE WHEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END)) > 0 THEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END))ELSE 0 END) BAKÝYE
FROM
TBLKASA A
WHERE
TARIH BETWEEN '2012-01-01' AND '2012-12-31'
GROUP BY
A.KSMAS_KOD
ORDER BY
A.KSMAS_KOD ASC
 
Katılım
13 Aralık 2007
Mesajlar
96
Excel Vers. ve Dili
excel 2002
Benim eklediğim sorgu sadece aşşağıdaki gibidir. Eğer diğer sorgu yanlış ise gene hata verir bunuda unutma Bilgi paylaşarak güzel olur. en azından birşeyler verebildiysek ne mutlu bize
CASE
WHEN A.KSMAS_KOD ='00' THEN 'TL KASA'
WHEN A.KSMAS_KOD ='01' THEN 'USD KASA'
WHEN A.KSMAS_KOD ='02' THEN 'EURO KASA'
WHEN A.KSMAS_KOD ='POS' THEN 'POS KASA'
END AS [A.KSMAS_KOD],
 
Üst