2 Stimmen

SQL-Zählabfrage

Hallo, warum funktioniert das nicht in SQL Server 2005?

select HALID, count(HALID) as CH from Outages.FaultsInOutages

where CH > 3

group by HALID

Ich erhalte einen ungültigen Spaltennamen 'CH'.


Ich denke, dass es der richtige Weg war, aber ich erhalte immer noch den Fehler: Ungültiger Spaltenname 'CH'.

Im Betrieb:

select HALID, count(HALID) as CH from Ausfälle.FehlerInAusfälle group by HALID mit CH > 3

14voto

Mitchel Sellers Punkte 60318

Sie können den Alias nicht in der where-Klausel oder der having-Klausel verwenden, da er erst verarbeitet wird, NACHDEM die Ergebnismenge generiert wurde; die richtige Syntax lautet

SELECT HALID, COUNT(HALID) AS CH
FROM Outages.FaultsInOutages
GROUP BY HALID
HAVING COUNT(HALID) > 3

Dies gruppiert die Einträge nach HALID und gibt dann NUR Ergebnisse zurück, die mehr als 3 Einträge für die spezifische HALID haben

4voto

Vinko Vrsalovic Punkte 252104

Versuchen Sie

select HALID, count(HALID) from Outages.FaultsInOutages 
group by HALID having count(HALID) > 3

Ihre Anfrage enthält zwei Fehler:

  • Die Verwendung von where als Aggregat bei der Gruppierung nach, gelöst durch die Verwendung von having
  • Verwendung eines Alias für ein Aggregat in der Bedingung, nicht unterstützt, gelöst durch erneute Verwendung des Aggregats

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X