Forum
Merhabalar, oluşturmakta zorluk çektiğim bir sql sorgum bulunmakta,
+----+-------+-----+ | id | HesapTipi| yas | +----+-------+-----+ | 1 | 1 | 39 | | 2 | 1 | 28 | | 3 | 1 | 24 | | 4 | 2 | 32 | | 5 | 2 | 48 | | 6 | 2 | 24 |
+----+-------+-----+
Bu şekilde bir tablomuz olduğunu düşünelim, benim sql sorguda gerçekleştirmek istediğim hesap tipi 1 olanların toplamını, 2 olanlarında ortalamasını alarak
tek bir tablo içerisinde bana göstersin. Yani oluşturduğum sorgudan sonra bana geri döndüreceği tablo aşağıdaki gibi olsun.
+---------------+---------+
HesapTipi Sonuc
1 91
2 34,66666
Tek bir sql sorgusunda bu olayı gerçekleştirebilmek mümkün müdür ? Mümkün ise nasıl bir yol izlemem gerekecektir. Yardımlarınız için şimdiden teşekkürler....
Merhaba,
Select HesapTipi, Sum(yas) as Sonuc
From table
Where HesapTipi=1
Group By HesapTipi
Union All
Select HesapTipi, Avg(yas) as Sonuc
From table
Where HesapTipi=2
Group By HesapTipi
Yardımınızdan dolayı çok teşekkürler Orhan Bey, bu yapmış olduğunuz işlemi performans açısından tavsiye eder misiniz? Yoksa tablolama yapımda değişiklik yapmalımıyım ?
Merhaba,
Orhan bey'in dediği gibi yapabilirsiniz yada aşağıdaki sorgu ile daha kısa kodlar ile yapabilirsiniz.
select
HesapTipi,
CASE HesapTipi WHEN 1 THEN SUM(Yas) WHEN 2 THEN AVG(Yas) END AS Yas
from tblTest GROUP BY HesapTipi
Tablonuzda kayıt sayınız çok ise Orhan bey'in gösterdiği örnek daha performanslı çalışacaktır.
İlgi ve alakanızdan dolayı teşekkürler, Orhan Bey 'in yöntemi ile sorunumu çözdüm fakat sizin yönteminizi de notlarım arasına aldım. Vermiş olduğunuz bilgilerden dolayı tekrardan teşekkürler.