Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Gruppi di raggruppamento:visualizzare i totali parziali in un'altra colonna specifica?

Sono d'accordo con Jamie, potresti voler gestire visivamente i totali parziali in un livello diverso, ma quello che potresti voler provare è usare GROUPING() funzione sulla colonna. Questa funzione restituisce 1 se fa parte di GROUPING SETS subtotali e 0 se si tratta di una colonna regolare. http://technet.microsoft.com/en- us/library/ms178544(SQL.90).aspx

Ho incluso i dati di esempio con cui ho testato. Rimuovi il primo WITH emp_test AS () quando utilizzi l'istruzione select.

I miei dati di prova:

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
)

Rispondi per ottenere i totali parziali su una colonna separata:

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)