sql >> Databáze >  >> RDS >> Sqlserver

Ve výrazu použitém pro seznam skupin podle klauzule GROUP BY nelze použít agregační nebo poddotaz

Pokud nezahrnete T.Client ve vašem GROUP BY , můžete toto pole zahrnout pouze do agregační funkce. Ve vašem případě seskupení podle tohoto pole změní logiku, takže je to mimo (a souvisí s vaším pokusem o seskupení podle příkazu CASE). Místo toho zabalte T.Client v agregační funkci.

Tímto způsobem jsou vaše skupiny stále stejné, a když existuje pouze jeden řádek, podle testu příkazu CASE víte, jaký výsledek dá agregační funkce.

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. číslo_řádku o několik sloupců

  2. dynamický sql dotaz v postgresu

  3. Jak simulovat DEADLOCK na SQL Server?

  4. Jak monitorovat sdružování připojení pro .NET MySQL Data Connector ve službě IIS