2015-10-25 4 views

ответ

2

Использование ROLLUP:

SELECT * 
FROM(
    SELECT 
     Sub1, 
     Sub2 = ISNULL(Sub2, 0), 
     Total = SUM(Total) 
    FROM tbl 
    GROUP BY ROLLUP(Sub1, Sub2) 
)t 
WHERE Sub1 IS NOT NULL 
ORDER BY Sub1, Sub2 

Используя SUM и UNION ALL:

SELECT * FROM tbl 
UNION ALL 
SELECT Sub1, 0, SUM(Total) 
FROM tbl 
GROUP BY Sub1 
ORDER BY Sub1, Sub2 
+0

не возможно без накидной ИЛИ UNION ALL? – tufancakiroglu

+0

Попробуйте найти 'ROLLUP' или' GROUPING SETS'. –