sql >> Databasteknik >  >> RDS >> Sqlserver

Kan inte använda ett aggregat eller en underfråga i ett uttryck som används för group by-listan i en GROUP BY-sats

Såvida du inte inkluderar T.Client i din GROUP BY , kan du bara inkludera det fältet i en aggregerad funktion. I ditt fall ändrar gruppering efter det fältet logiken, så det är ute (och är relaterat till ditt försök att gruppera efter CASE-satsen). Slå i stället T.Client i en aggregerad funktion.

På så sätt är dina grupper fortfarande desamma, och när det bara finns en rad, enligt ditt CASE-test, vet du vilket resultat den aggregerade funktionen kommer att ge.

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. Sqoop on Dataproc kan inte exportera data till Avro-format

  2. Importera stor CSV-fil till MySQL

  3. Så här gör du:Grails 3.0.2 + Oracle Database 12c?

  4. MySQL-kodningsproblem - Olika resultat från Windows till Linux