sql >> Database teknologi >  >> RDS >> Sqlserver

Kan ikke bruge et aggregat eller en underforespørgsel i et udtryk, der bruges til group by-listen i en GROUP BY-sætning

Medmindre du inkluderer T.Client i din GROUP BY , kan du kun inkludere dette felt i en aggregeret funktion. I dit tilfælde ændrer gruppering efter det felt logikken, så det er ude (og er relateret til dit forsøg på at gruppere efter CASE-sætningen). Ombryd i stedet T.Client i en aggregeret funktion.

På denne måde er dine grupper stadig de samme, og når der kun er én række, i henhold til din CASE-sætnings test, ved du, hvilket resultat den aggregerede funktion vil give.

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. Spor ikke-deterministiske MySQL-fejl i Perl

  2. Konverter tal til date sql oracle

  3. hvad sker der i adoptionsfasen forberede

  4. ORA-01795:maksimalt antal udtryk på en liste er 1000, hvordan opdeles strengen