Forum

Koşullu toplama sor...
 
Bildirimler
Hepsini Temizle

Koşullu toplama sorgusu

10 Yazılar
3 Üyeler
0 Reactions
11.1 K Görüntüleme
(@ozguraltinel)
Gönderiler: 244
Reputable Member
Konu başlatıcı
 

Merhaba Arkadaşlar.

 

Aşağıdaki tabloyu  şöyle yapmak istiyorum. Tablo adı MUHFIS

Amacım borç alacaktaki 1 ve 2 lerin tutarlarını ayrı ayrı
toplamak. Ama toplamayı yaparken GRUP koduna göre toplamak. Yani sorgumun
sonucunda tablo aşağıdaki gibi olmalı.

Yardımcı olurmusunuz?

 

 

 

BORÇ/ALACAK

TUTAR

GRUP

1

1500

A

2

23.2

A

1

35.5

A

1

17.8

A

2

11.1

A

2

55

B

2

27.5

B

1

23

B

2

28

B

1

150

B

1

169

C

2

278

C

1

22

C

1

133

D

1

215

D

1

22

D

2

158

D

2

98

E

1

87

E

2

95

E

 

 

 

 

 

İSTEDİĞİM HALİ

 

BA1TOPLAM

BA2TOPLAM

GRUP

1553.3

23.2

A

173

110.5

B

191

278

C

370

158

D

87

193

E

 
Gönderildi : 09/08/2012 19:02

(@SavasKAPLAN)
Gönderiler: 244
Reputable Member
 

SELECT SUM(TUTAR) FROM MUHFIS WHERE GRUP = 'A' AND ALACAK = '1'

SELECT SUM(TUTAR) FROM MUHFIS WHERE GRUP = 'A' AND ALACAK = '2'
veya
SELECT SUM(TUTAR) AS BA1TOPLAM FROM MUHFIS WHERE GRUP = 'A' AND ALACAK = '1'
SELECT SUM(TUTAR) AS BA2TOPLAM FROM MUHFIS WHERE GRUP = 'A' AND ALACAK = '2'yada
SET @BA1TOPLAM = (SELECT SUM(TUTAR) FROM MUHFIS WHERE GRUP = 'A' AND ALACAK = '1')
SET @BA2TOPLAM = (SELECT SUM(TUTAR) FROM MUHFIS WHERE GRUP = 'A' AND ALACAK = '2')
 
Gönderildi : 10/08/2012 08:53

(@ozguraltinel)
Gönderiler: 244
Reputable Member
Konu başlatıcı
 

Merhaba Savaş Bey.

Cevap için teşekkürler fakat Grup isimleri 3-4 adet değil. Binlerce.

Benim sorguda grup adı aynı olanları şeklinde yapmam gerek. 

 

 
Gönderildi : 10/08/2012 11:57

(@kenanilgun)
Gönderiler: 544
Üye
 

bence bu işlemi sağa doğru columns ler ile değilde row mantığında yapmanız daha doğru olur eğerki odeme turleri 2 adet ise farklı bir kodda verebilirim

 

SELECT

odemeturu, grup, SUM(tutar) as tutar

FROM

test

GROUP BY grup, odemeturu

ORDER BY grup 

 
Gönderildi : 10/08/2012 12:22

(@ozguraltinel)
Gönderiler: 244
Reputable Member
Konu başlatıcı
 

Merhaba Kenan Bey.

Sorgu bu şekilde de işime yaramıyor. Böyle yaptığımda Grup A olan 2 satırda karşıma geliyor. 2 Ayrı sütunda yapmalıyım. Çünkü Bir sonraki aşamada Yeni sütuna BA1TOPLAM-BA2TOPLAM değerini yazdıracağım. 

 
Gönderildi : 10/08/2012 12:51

(@kenanilgun)
Gönderiler: 544
Üye
 
SELECT
T.grup,
SUM(T_Borc.tutar) AS Borc_ToplamTutar,
SUM(T_Alacak.tutar) AS Alacak_ToplamTutar
FROM
test T
LEFT OUTER JOIN test T_Borc ON (T_Borc.grup = T.grup AND T_Borc.odemeturu = 1)
LEFT OUTER JOIN test T_Alacak ON (T_Alacak.grup = T.grup AND T_Alacak.odemeturu = 2)
GROUP BY T.grup
 
Gönderildi : 10/08/2012 14:43

(@ozguraltinel)
Gönderiler: 244
Reputable Member
Konu başlatıcı
 

Kenan Bey.

Raporu aldım fakat şöyle bir durum var.

Alacak_ToplamTutar odemeturu 1 ve 2 nin toplamı olmuş.

Borc_ToplamTutar ise Alacak_ToplamTurar'ın 2 katı olmuş.  

 
Gönderildi : 10/08/2012 16:09

(@kenanilgun)
Gönderiler: 544
Üye
 

Pardon

 

SELECT

T.grup,

(SELECT SUM(tutar) AS tutar FROM test WHERE grup = T.grup AND odemeturu = 1) AS Borc_ToplamTutar,

(SELECT SUM(tutar) AS tutar FROM test WHERE grup = T.grup AND odemeturu = 2) AS Alacak_ToplamTutar

FROM

test T

GROUP BY T.grup

 

Aslında datalarınızdan daha açıklayıcı örnekler olsaydı daha iyi olurdu herneyse bu şekilde sorununuz büyük ihtimalle çözülecektir. İyi çalışmalar

 
Gönderildi : 10/08/2012 16:54

(@ozguraltinel)
Gönderiler: 244
Reputable Member
Konu başlatıcı
 

Kenan Bey ilginiz için çok teşekkür ederim. 

Şuan istediğim gibi veriyor. 

Çok teşekkür ederim tekrar. 

 
Gönderildi : 10/08/2012 17:51

(@SavasKAPLAN)
Gönderiler: 244
Reputable Member
 

Merhaba Savaş Bey.

Cevap için teşekkürler fakat Grup isimleri 3-4 adet değil. Binlerce.

Benim sorguda grup adı aynı olanları şeklinde yapmam gerek. 

Merhaba Özgür Bey,

Sorgunun grup bazlı olması gerektiği dikkatimden kaçmış. Tablodaki verilere bakınca proje ödevi gibi bir şey sanmıştım 🙂

Kolay gelsin, iyi çalışmalar.

 
Gönderildi : 11/08/2012 00:59

Paylaş: