2011-02-16 26 views

cevap

11

hiçbir boş master_code satır vardır.

SELECT ISNULL(Master_code, 'Total') AS Master_Code, 
     Jan, 
     Feb, 
     Mar 
FROM (
     SELECT Master_code, 
      SUM(Jan) AS Jan, 
      SUM(Feb) AS Feb, 
      SUM(Mar) AS Mar 
     FROM foobar 
     WHERE Participating_City = 'foofoo' 
     GROUP BY Master_code WITH ROLLUP 
    ) AS DT 
+4

1 answer = SONRA 1'e kabul etmek değişmelidir daha genelleştirilmiş bir yaklaşım –

16

aynı sorguyu ama gruplaşma olmadan tekrar bir birlik olun: varsayarsak

select Title, Jan, Feb, Mar 
from (
    select Master_Code as Title, SUM(Jan) as Jan, SUM(Feb) as Feb, SUM(Mar) as Mar 
    from dbo.foobar 
    WHERE Participating_City = 'foofoo' 
    GROUP BY Master_Code ORDER BY Master_Code ASC 
) x 
union all 
select 'Total', SUM(Jan) as Jan, SUM(Feb) as Feb, SUM(Mar) as Mar 
from dbo.foobar 
WHERE Participating_City = 'foofoo' 
+2

+1 çünkü daha kendi kendini açıklayan bu (Master_code) GROUPING ZAMAN Sen 'ÖRNEĞİ kullanabilirsiniz – bluish

+2

+1 'Toplam' olduğunu ELSE Master_code END 'sütunun null olması durumunda. – KManohar

+0

Afiş için – cinqS

2

Ayrıca Coalesce ve Rollup ile de kullanabilirsiniz.

SELECT COALESCE(Master_Code, 'TOTAL') AS MASTER_CODE, SUM(Jan), SUM(Feb), SUM(Mar) 
FROM dbo.foobar 
WHERE Participating_City = 'foofoo' 
GROUP BY Master_Code WITH ROLLUP 
ORDER BY Master_Code DESC 
İlgili konular