Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Набори за групиране:показване на междинни суми в друга конкретна колона?

Съгласен съм с Джейми, че може да искате междинните суми да се обработват визуално в различен слой, но това, което може да искате да опитате, е да използвате GROUPING() функция на колоната. Тази функция връща 1, ако е част от GROUPING SETS междинни суми и 0, ако е обикновена колона. http://technet.microsoft.com/en- us/library/ms178544(SQL.90).aspx

Включих примерните данни, с които тествах. Премахнете първия WITH emp_test AS () когато използвате командата select.

Моите тестови данни:

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
)

Отговорете, за да получите междинни суми в отделна колона:

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. Редове до стойности, разделени със запетая, с помощта на XML таг

  2. sp_ddopen - Какво прави това?

  3. tsql:Как да извлечете последната дата на всеки месец между даден период от време

  4. как да разберете колко реда ще бъдат засегнати, преди да изпълните заявка в microsoft sql server 2008

  5. Използване на TSQL за разархивиране на стойност