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

Добавете обобщен ред с общи суми

Ако използвате SQL Server 2008 или по-нова версия, можете да използвате ROLLUP() Функция GROUP BY:

SELECT
  Type = ISNULL(Type, 'Total'),
  TotalSales = SUM(TotalSales)
FROM atable
GROUP BY ROLLUP(Type)
;

Това предполага, че Type колоната не може да има NULL и така NULL в тази заявка ще посочи сборния ред, този с общата сума. Въпреки това, ако Type колоната може да има собствени NULL, по-правилният тип отчитане на общия ред би бил като в отговора на @Declan_K, т.е. с помощта на GROUPING() функция:

SELECT
  Type = CASE GROUPING(Type) WHEN 1 THEN 'Total' ELSE Type END,
  TotalSales = SUM(TotalSales)
FROM atable
GROUP BY ROLLUP(Type)
;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Пуснете външния ключ, без да знаете името на ограничението?

  2. Добавяне на намек за заявка при извикване на функция с таблична стойност

  3. EF5:Не може да се прикачи файла „{0}“ като база данни „{1}“

  4. SQL Server 2005 Как да създадете уникално ограничение?

  5. Не може да се свърже със сървъра - грешка, свързана с мрежата или специфична за екземпляр