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

Не може да се използва агрегат или подзаявка в израз, използван за групиране по списък на клауза GROUP BY

Освен ако не включите T.Client във вашия GROUP BY , можете да включите това поле само в рамките на агрегатна функция. Във вашия случай групирането по това поле променя логиката, така че това е изключено (и е свързано с опита ви да групирате по израза CASE). Вместо това обвийте T.Client в агрегатна функция.

По този начин вашите групи са все същите и когато има само един ред, според теста на вашия оператор CASE, вие знаете какъв резултат ще даде агрегатната функция.

SELECT
  T.Post,
  ClientCount = COUNT(*) AS ClientCount,
  Client      = CASE COUNT(*) WHEN 1 THEN MAX(T.Client) ELSE '[Clients]' END
FROM
  MyTable T
GROUP BY
  T.Post


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Достъп до изходния параметър на съхранена процедура на SQL Server в C#

  2. Dynamic SQL Server Pivot ( UNPIVOT ) име на колона към стойност на ред

  3. Има ли начин да преминете през променлива на таблица в TSQL, без да използвате курсор?

  4. Свързване към SQL Server LocalDB чрез JDBC

  5. Какво е СТАТИСТИЧЕСКО ВРЕМЕ в SQL Server?