sql >> Database >  >> RDS >> Sqlserver

Kan geen aggregatie of subquery gebruiken in een expressie die wordt gebruikt voor de group by-lijst van een GROUP BY-clausule

Tenzij u T.Client opneemt in uw GROUP BY , kunt u dat veld alleen in een aggregatiefunctie opnemen. In uw geval verandert het groeperen op dat veld de logica, dus dat is uit (en is gerelateerd aan uw poging om te groeperen op basis van de CASE-instructie). Wikkel in plaats daarvan T.Client in een geaggregeerde functie.

Op deze manier zijn je groepen nog steeds hetzelfde, en als er maar één rij is, volgens de test van je CASE-statement, weet je welk resultaat de aggregatiefunctie zal geven.

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. Paginering (Vorige | Volgende) met Smarty

  2. Verschil tussen BINARY (16) en CHAR (32) bij het opslaan van MD5 in de database

  3. sql-tabel met primaire sleutel uit een andere tabel

  4. Een tafel controleren op tijdoverlap?