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)