sql >> Base de Datos >  >> RDS >> Sqlserver

No se puede utilizar un agregado o una subconsulta en una expresión utilizada para el grupo por lista de una cláusula GROUP BY

A menos que incluya T.Client en tu GROUP BY , solo puede incluir ese campo dentro de una función agregada. En su caso, agrupar por ese campo cambia la lógica, por lo que está fuera (y está relacionado con su intento de agrupar por la instrucción CASE). En su lugar, envuelva T.Client en una función agregada.

De esta manera, sus grupos siguen siendo los mismos, y cuando solo hay una fila, según la prueba de su instrucción CASE, sabe qué resultado dará la función agregada.

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