sql >> Databáze >  >> RDS >> Sqlserver

Seskupení sad:zobrazit mezisoučty v jiném konkrétním sloupci?

Souhlasím s Jamiem, možná budete chtít, aby byly mezisoučty vizuálně zpracovány v jiné vrstvě, ale možná budete chtít zkusit použít GROUPING() funkce na sloupu. Tato funkce vrátí 1, pokud je součástí GROUPING SETS mezisoučty a 0, jde-li o běžný sloupec. http://technet.microsoft.com/en- us/library/ms178544(SQL.90).aspx

Zahrnul jsem ukázková data, se kterými jsem testoval. Odstraňte první WITH emp_test AS () když použijete příkaz select.

Moje testovací data:

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
)

Odpovědí získáte mezisoučty v samostatném sloupci:

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. Hodnota oddělená čárkami a zástupné znaky v mysql

  2. Jak používat funkci Coalesce v Oracle

  3. 3 způsoby použití VŠECHNY na serveru SQL

  4. Použijte CTE k UPDATE nebo DELETE v MySQL