HAVING-Klausel (SQL Server Compact)

Gibt eine Suchbedingung für eine Gruppe oder ein Aggregat an. HAVING wird üblicherweise in GROUP BY-Klauseln verwendet.

Syntax

[ HAVING < search_condition > ] 

Argumente

  • < search_condition >
    Gibt die Suchbedingung an, die für die Gruppe erfüllt werden soll. In einer Suchbedingung können Aggregat- und Nichtaggregatausdrücke verwendet werden. In einem Nichtaggregatausdruck können nur die Spalten verwendet werden, die in der jeweiligen GROUP BY-Klausel als Gruppierungsspalten angegeben sind. Die Ursache hierfür ist, dass die GROUP BY-Spalten allgemeinen Eigenschaften der gesamten Gruppe entsprechen. Ein Aggregatausdruck entspricht gleichfalls einer allgemeinen Eigenschaft der gesamten Gruppe. Die in einer HAVING-Klausel angegebene Suchbedingung ergibt ein Prädikat über die Eigenschaften der Gruppe.

    Eine Spalte, die den image- oder ntext-Datentyp hat, kann nicht in einer HAVING-Klausel verwendet werden.

Hinweise

Die folgenden Abfragen sind in SQL Server, aber nicht in SQL Server Compact 3.5 zulässig, wo sie die folgende Fehlermeldung auslösen: "In Aggregat- und Gruppierungsausdrücken darf die HAVING-Klausel nur Aggregatfunktionen und Gruppierungsausdrücke enthalten."

select count(*), c1+c2 from s1 group by c1+c2 having c1+c2 <10; 
select count(*), x from (select *, col1 + col2 as x from oj1) d group by x having x <4;

Diese Abfragen sind in SQL Server Compact 3.5 jedoch zulässig, wenn eine einfache Spaltenvariable anstatt eines Ausdrucks verwendet wird, beispielsweise (c1+c2).

Beispiel

Im folgenden Beispiel wird eine Liste aller Produkte mit einer Gesamtanzahl von > 50 zurückgegeben.

SELECT [Product ID], COUNT(*) AS Total FROM [Order Details] GROUP BY [Product ID] HAVING (COUNT(*) > 50)