Estoy de acuerdo con Jamie, es posible que desee que los subtotales se manejen visualmente en una capa diferente, pero lo que podría intentar es usar GROUPING()
función en la columna. Esta función devuelve 1 si es parte de GROUPING SETS
subtotales y 0 si es una columna regular. http://technet.microsoft.com/en- us/library/ms178544(SQL.90).aspx
Incluí los datos de muestra con los que probé. Eliminar el primer WITH emp_test AS ()
cuando usa la instrucción select.
Mis datos de prueba:
WITH emp_test AS
(
SELECT 10 AS DEPTNO, 7782 AS EMPNO, 20000 AS sal
UNION ALL SELECT 10, 7839, 10000
UNION ALL SELECT 20, 7566, 5950
UNION ALL SELECT 20, 7788, 6000
)
Responda para obtener subtotales en una columna separada:
SELECT deptno, empno
, CASE
WHEN GROUPING(empNo) = 1 THEN null
ELSE SUM(sal)
END as sum_salary
, CASE
WHEN GROUPING(empno) = 1 THEN SUM(sal)
ELSE NULL
END AS SubTotal
FROM emp_test
GROUP BY GROUPING SETS (DeptNo, Empno), (DeptNo)