Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server-
Wenn Sie aggregierte Abfragen erstellen, werden von den Abfrage- und Ansichts-Designertools (Visual Database Tools) bestimmte Annahmen getroffen, damit sie eine gültige Abfrage erstellen können. Wenn Sie beispielsweise eine Aggregatabfrage erstellen und eine Datenspalte für die Ausgabe markieren, erstellt der Abfrage- und Ansichts-Designer automatisch den Spaltenteil der GROUP BY Klausel, sodass Sie nicht versehentlich versuchen, den Inhalt einer einzelnen Zeile in einer Zusammenfassung anzuzeigen.
Verwenden von "Gruppieren nach"
Der Abfrage- und Ansichts-Designer verwendet die folgenden Richtlinien für das Arbeiten mit Spalten:
Wenn Sie die Option "Gruppieren nach" auswählen oder einer Abfrage eine Aggregatfunktion hinzufügen, werden alle spalten, die für die
GROUP BYAusgabe markiert oder zum Sortieren verwendet werden, der Klausel automatisch hinzugefügt. Spalten werden der Klausel nicht automatisch hinzugefügtGROUP BY, wenn sie bereits Teil einer Aggregatfunktion sind.Wenn eine bestimmte Spalte nicht Teil der
GROUP BYKlausel sein soll, müssen Sie sie manuell ändern, indem Sie eine andere Option in der Spalte "Gruppieren nach" im Bereich "Kriterien" auswählen. Der Abfrage- und Ansichts-Designer verhindert jedoch nicht, dass Sie eine Option auswählen, die zu einer Abfrage führen kann, die nicht ausgeführt wird.Wenn Sie eine Abfrageausgabespalte manuell zu einer Aggregatfunktion im Kriterien- oder SQL-Bereich hinzufügen, entfernt der Abfrage- und Ansichts-Designer nicht automatisch andere Ausgabespalten aus der Abfrage. Daher müssen Sie die verbleibenden Spalten aus der Abfrageausgabe entfernen oder sie zu einem Teil der
GROUP BYKlausel oder einer Aggregatfunktion machen.
Wenn Sie eine Suchbedingung in die Spalte "Filter" des Bereichs "Kriterien" eingeben, folgt der Abfrage- und Ansichts-Designer den folgenden Regeln:
Wenn die Spalte " Gruppieren nach " des Rasters nicht angezeigt wird (da Sie noch keine Aggregatabfrage angegeben haben), wird die Suchbedingung in die
WHEREKlausel eingefügt.Wenn Sie sich bereits in einer Aggregatabfrage befinden und die Option "Wo in der Spalte " Gruppieren nach " ausgewählt haben, wird die Suchbedingung in die
WHEREKlausel eingefügt.Wenn die Spalte "Gruppieren nach " einen anderen Wert als "Where" enthält, wird die Suchbedingung in der
HAVINGKlausel platziert.
Verwenden der HAVING- und WHERE-Klauseln
Die folgenden Prinzipien beschreiben, wie Sie in suchbedingungen auf Spalten in einer Aggregatabfrage verweisen können. Im Allgemeinen können Sie eine Spalte in einer Suchbedingung verwenden, um die Zeilen zu filtern, die zusammengefasst werden sollen (eine WHERE Klausel) oder um zu bestimmen, welche gruppierten Ergebnisse in der endgültigen Ausgabe (a HAVING Klausel) angezeigt werden sollen.
Einzelne Datenspalten können abhängig davon, wie sie an anderer Stelle in der Abfrage verwendet werden, entweder in der
WHEREKlausel oderHAVINGin der Klausel angezeigt werden.WHEREKlauseln werden verwendet, um eine Teilmenge von Zeilen zum Zusammenfassen und Gruppieren auszuwählen und werden daher angewendet, bevor eine Gruppierung abgeschlossen ist. Daher können Sie eine Datenspalte in einerWHEREKlausel verwenden, auch wenn sie nicht Teil derGROUP BYKlausel ist oder in einer Aggregatfunktion enthalten ist. ** Zum Beispiel wählt die folgende Anweisung alle Titel aus, die mehr als 10,00 $ kosten und berechnet den Durchschnittspreis.SELECT AVG(price) FROM titles WHERE price > 10;Wenn Sie eine Suchbedingung erstellen, die eine Spalte umfasst, die auch in einer
GROUP BYKlausel oder Aggregatfunktion verwendet wird, kann die Suchbedingung entwederWHEREals Klausel oder alsHAVINGKlausel angezeigt werden . Sie können entscheiden, welche Bedingung Sie beim Erstellen der Bedingung erstellen. Die folgende Anweisung erstellt beispielsweise einen Durchschnittspreis für die Titel für jeden Herausgeber und zeigt dann den Mittelwert für die Herausgeber an, in denen der Durchschnittspreis größer als 10,00 $ ist:SELECT pub_id, AVG(price) FROM titles GROUP BY pub_id HAVING (AVG(price) > 10);Wenn Sie eine Aggregatfunktion in einer Suchbedingung verwenden, umfasst die Bedingung eine Zusammenfassung und muss daher Teil der
HAVINGKlausel sein.