Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Grupowanie zestawów:wyświetlać sumy częściowe w innej określonej kolumnie?

Zgadzam się z Jamiem, że możesz chcieć, aby sumy częściowe były wizualnie obsługiwane w innej warstwie, ale możesz chcieć spróbować użyć GROUPING() funkcja na kolumnie. Ta funkcja zwraca 1, jeśli jest częścią GROUPING SETS sumy częściowe i 0, jeśli jest to zwykła kolumna. http://technet.microsoft.com/en- us/library/ms178544(SQL.90).aspx

Dołączyłem przykładowe dane, z którymi testowałem. Usuń pierwszy WITH emp_test AS () kiedy używasz instrukcji SELECT.

Moje dane testowe:

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
)

Odpowiedz, aby uzyskać sumy częściowe w osobnej kolumnie:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Scal wiele wierszy w jeden wiersz

  2. wstawić znaki kontrolne w nvarchar lub varchar ze skryptu SQL?

  3. Funkcja DECODE() w SQL Server

  4. Właściwa kolejność instalacji VS 2012 Express i SQL Server 2012 Express

  5. Skrypt do usuwania wszystkich obiektów niesystemowych w SQL Server 2008