MSSQL ile Özet sorgu sonucuna toplam satırı ekleme

MSSQL ile Özet sorgu sonucuna toplam satırı ekleme

MS Sql ile özet sorgularda gruplanan sonucun en alt satırına toplam alanı eklenmesi bazen istenebilir. Aslında bu konu sorgunun değil raporun işi olsa da bazen sorguya ekleme pratiklik sağlar.

Aşağıdaki gruplanan sorguya birde union ile sorgu ekleyip sorunu çözebiliriz. 

Burada ZSonuç şeklinde sorguyu adlandırmamız nedeni alfabetik bir sıralama olacağından en alt satıra Toplam satırı gelmesi içindir. 

Dikkat edilecek diğer nokta ise bu bir Union sorgusu olduğundan 1. sorgu sonucu alanı kadar 2. sorgu sonucu alanı olmalı ve alt alta gelen alanlar aynı türden veriler içermelidir. 

Veri kaynağı için geçici tablo oluşturma 

SELECT 1 AS ID,'AHMET1' AS ADI,'DENEME1' AS SOYADI,'İSTANBUL' AS SEHIR
INTO #GECICI_TABLO
UNION
SELECT 2   AS ID, 'AHMET2' AS ADI,'DENEME2' AS SOYADI,'ANKARA' AS SEHIR UNION
SELECT 3   AS ID, 'AHMET3' AS ADI,'DENEME3' AS SOYADI,'İSTANBUL' AS SEHIR UNION
SELECT 4   AS ID,'AHMET4' AS ADI,'DENEME4' AS SOYADI,'ANKARA' AS SEHIR UNION
SELECT 5   AS ID,'AHMET5' AS ADI,'DENEME5' AS SOYADI,'İZMİR' AS SEHIR UNION
SELECT 6   AS ID,'AHMET6' AS ADI,'DENEME6' AS SOYADI,'BURSA' AS SEHIR UNION
SELECT 7   AS ID,'AHMET7' AS ADI,'DENEME7' AS SOYADI,'İZMİR' AS SEHIR UNION
SELECT 8   AS ID,'AHMET8' AS ADI,'DENEME8' AS SOYADI,'İSTANBUL' AS SEHIR UNION
SELECT 9   AS ID,'AHMET9' AS ADI,'DENEME9' AS SOYADI,'İSTANBUL' AS SEHIR UNION
SELECT 10 AS ID,'AHMET10' AS ADI,'DENEME10' AS SOYADI,'İZMİR' AS SEHIR UNION
SELECT 11 AS ID,'AHMET11' AS ADI,'DENEME11' AS SOYADI,'ANKARA' AS SEHIR UNION
SELECT 12 AS ID,'AHMET12' AS ADI,'DENEME12' AS SOYADI,'BURSA' AS SEHIR UNION
SELECT 13 AS ID,'AHMET13' AS ADI,'DENEME13' AS SOYADI,'ADANA' AS SEHIR UNION
SELECT 14 AS ID,'AHMET14' AS ADI,'DENEME14' AS SOYADI,'ADANA' AS SEHIR UNION
SELECT 15 AS ID,'AHMET15' AS ADI,'DENEME15' AS SOYADI,'İSTANBUL' AS SEHIR 

Oluşturduğumuz geçici tablomuzun içeriği aşağıdaki gibidir. 

SELECT * FROM #GECICI_TABLO 

ID ADI SOYADI SEHIR
1 AHMET1 DENEME1 İSTANBUL
2 AHMET2 DENEME2 ANKARA
3 AHMET3 DENEME3 İSTANBUL
4 AHMET4 DENEME4 ANKARA
5 AHMET5 DENEME5 İZMİR
6 AHMET6 DENEME6 BURSA
7 AHMET7 DENEME7 İZMİR
8 AHMET8 DENEME8 İSTANBUL
9 AHMET9 DENEME9 İSTANBUL
10 AHMET10 DENEME10 İZMİR
11 AHMET11 DENEME11 ANKARA
12 AHMET12 DENEME12 BURSA
13 AHMET13 DENEME13 ADANA
14 AHMET14 DENEME14 ADANA
15 AHMET15 DENEME15 İSTANBUL

 Gruplama ve Toplam satırı ekleyen Sorgu

SELECT SEHIR,COUNT(ID) AS SAYI Sorgu

FROM #GECICI_TABLO
GROUP BY SEHIR
UNION
SELECT 'ZTOPLAM',COUNT(ID) AS SAYI
FROM #GECICI_TABLO

ORDER BY 1

Sonuç 

SEHIR SAYI
ADANA 2
ANKARA 3
BURSA 2
İSTANBUL 5
İZMİR 3
ZTOPLAM 15


İlgili Yazılar