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

Gruppering af sæt:Vis subtotaler i en anden specifik kolonne?

Jeg er enig med Jamie, at du måske vil have subtotalerne visuelt håndteret i et andet lag, men hvad du måske vil prøve er at bruge GROUPING() funktion på kolonnen. Denne funktion returnerer 1, hvis den er en del af GROUPING SETS subtotaler og 0, hvis det er en regulær kolonne. http://technet.microsoft.com/en- us/library/ms178544(SQL.90).aspx

Jeg inkluderede de prøvedata, jeg testede med. Fjern den første WITH emp_test AS () når du bruger select-sætningen.

Mine testdata:

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
)

Svar for at få subtotaler i separat kolonne:

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)


  1. Tilpas Spotlight Cloud Alarmer

  2. få DATEDIFF eksklusive weekender ved hjælp af sql server

  3. Hvordan kan jeg få forskellen i timer mellem to datoer?

  4. HTTP Status 500 - Java Runtime Environment (JRE) version 1.7 understøttes ikke af denne driver