sql >> Database >  >> RDS >> Sqlserver

Groeperingssets:subtotalen weergeven in andere specifieke kolom?

Ik ben het met Jamie eens dat je misschien wilt dat de subtotalen visueel in een andere laag worden verwerkt, maar wat je zou kunnen proberen is het gebruik van de GROUPING() functie op de kolom. Deze functie retourneert 1 als deze deel uitmaakt van de GROUPING SETS subtotalen, en 0 als het een normale kolom is. http://technet.microsoft.com/en- us/library/ms178544(SQL.90).aspx

Ik heb de voorbeeldgegevens toegevoegd waarmee ik heb getest. Verwijder de eerste WITH emp_test AS () wanneer u de select-instructie gebruikt.

Mijn testgegevens:

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
)

Antwoord om subtotalen in een aparte kolom te krijgen:

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. Voer tekst en speciale tekens in en MySQL

  2. Kon geen informatie verkrijgen over Windows NT-groep/gebruiker

  3. PHP werkt niet op server

  4. PostgreSQL:Hoe kom ik erachter dat er ontbrekende getallen in een kolom zijn met behulp van Genereer_series()?