MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
conari
Üye
Mesajlar: 2102 Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık
Mesaj
gönderen conari » 10 Nis 2007 03:15
Kod: Tümünü seç
select stok ,(giris-cikis) as bakiye from tablostok where depo=11
Kod: Tümünü seç
select stok (sip_giris-sip_cikis) as sip_bakiye from tablostok where depo=11 or depo=20
ekteki sorgular gibi bir sorgum var ve birleştirerek almak istiyorum
ama sum ile Group by kullandım yine de depo koduna göre ayrı ayrı döküyor.
yani
Kod: Tümünü seç
select stok, (select(sum(giris-cikis) as bakiye where depo=11 ),
(select(sum(sip_giris-sip_cikis) as sip_bakiye where depo=11 and depo=20) from tablostok group by stok,giris,cikis,sip_giris,sip_cikis,depo
Nerdedir hatam ?
Bir kelimenin anlamını öğretsen bile yeter..
yazicih
Üye
Mesajlar: 92 Kayıt: 11 Şub 2005 02:10
Konum: Antalya
Mesaj
gönderen yazicih » 14 Nis 2007 12:37
GROUP BY KISMINA DEPO ALANINI KULLANMIŞSIN
rsimsek
Admin
Mesajlar: 4482 Kayıt: 10 Haz 2003 01:48
Konum: İstanbul
Mesaj
gönderen rsimsek » 18 Nis 2007 11:03
Gruplandığı için normal bir durum. UNION desteği var mı emin olmamakla birlikte şöyle olabilir;
Kod: Tümünü seç
select stok, (giris-cikis) as bakiye from tablostok
where depo=11
union
select stok (sip_giris-sip_cikis) as sip_bakiye from tablostok
where depo=11 or depo=20
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
conari
Üye
Mesajlar: 2102 Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık
Mesaj
gönderen conari » 18 Nis 2007 04:09
Yok hoca Union denedim yemiyo
sadece stok kodu ve bakiye geliyor ama oda mükerer stok kodu ile
Bir kelimenin anlamını öğretsen bile yeter..
Hakan Can
Üye
Mesajlar: 634 Kayıt: 04 Mar 2005 04:27
Konum: Ankara
Mesaj
gönderen Hakan Can » 18 Nis 2007 07:29
DERIVED TABLES querysi yazarak deneseniz.Yani:
Kod: Tümünü seç
SELECT
T1.Stok,
SUM(T1.bakiye) AS bakiye,
SUM(T1.sip_bakiye) AS sip_bakiye
FROM (
select stok, (select(sum(giris-cikis) as bakiye where depo=11 ),
(select(sum(sip_giris-sip_cikis) as sip_bakiye where depo=11 and depo=20) from tablostok group by stok,giris,cikis,sip_giris,sip_cikis,depo) T1
GROUP BY T1.Stok
İyi çalışmalar.
conari
Üye
Mesajlar: 2102 Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık
Mesaj
gönderen conari » 19 Nis 2007 10:32
2. AS 'lara şarlıjo
syntax hatası veriyor.
ilgilendiğin için teşekkürler.
Bir kelimenin anlamını öğretsen bile yeter..
Hakan Can
Üye
Mesajlar: 634 Kayıt: 04 Mar 2005 04:27
Konum: Ankara
Mesaj
gönderen Hakan Can » 20 Nis 2007 11:46
Zaten verdiğin query yanlış gibi de ben direk almıştım fazla incelemeden.
Kendi düzgün çalışan queryni benim yazdığımın içine yerleştirip denersen çalışması lazım ki genel yapı zaten o şekilde:
Kod: Tümünü seç
SELECT
T1.Stok,
SUM(T1.bakiye) AS bakiye,
SUM(T1.sip_bakiye) AS sip_bakiye
FROM (
...............
) T1
GROUP BY T1.Stok
İyi çalışmalar.
conari
Üye
Mesajlar: 2102 Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık
Mesaj
gönderen conari » 24 Nis 2007 12:05
Çözüme şu şekilde ulaştım Case ve when mantığı ile
Kod: Tümünü seç
SELECT STOK,
SUM(CASE WHEN DEPO=11 THEN (GIRIS-CIKIS) ELSE 0 END),
SUM(CASE WHEN DEPO IN ('11','20') THEN (SIP_GIRIS-SIP_CIKIS) ELSE 0 END)
FROM TABLOSTOK
GROUP BY STOK ORDER BY STOK
Bir kelimenin anlamını öğretsen bile yeter..
rsimsek
Admin
Mesajlar: 4482 Kayıt: 10 Haz 2003 01:48
Konum: İstanbul
Mesaj
gönderen rsimsek » 25 Nis 2007 10:18
Yukarıda da aynı yazılmış fakat ikinci CASE deki 11 gereksiz. Önceki CASE de yakaladığından ikinciye tekrar düşmez
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
conari
Üye
Mesajlar: 2102 Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık
Mesaj
gönderen conari » 25 Nis 2007 11:58
Hoca Selam,
Toplanan Alanlar farklı, bunun için yinede ikinci select de ve case komutunda depo =11 kullanmana gerek yok mu demek istedin?
tam anlayamadım.
Bir kelimenin anlamını öğretsen bile yeter..
rsimsek
Admin
Mesajlar: 4482 Kayıt: 10 Haz 2003 01:48
Konum: İstanbul
Mesaj
gönderen rsimsek » 26 Nis 2007 02:15
Ayrı ayrı CASE/WHEN kullandığın için söylediğim doğru değil. Tek CASE bloğunda dediğim mantık geçerli. Yine de 11 leri ayrı 20 leri ayrı toplatabilirsin.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!