COMPUTE (Transact-SQL)

Generiert Gesamtsummen, die als zusätzliche Summenspalten am Ende des Resultsets aufgeführt werden. In Verbindung mit BY generiert die COMPUTE-Klausel Gruppenwechsel und Untersummen im Resultset. Sie können COMPUTE BY und COMPUTE auch in derselben Abfrage angeben.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax


[ COMPUTE 
    { { AVG | COUNT | MAX | MIN | STDEV | STDEVP | VAR | VARP | SUM } 
    ( expression ) } [ ,...n ] 
    [ BY expression [ ,...n ] ] 
]

Argumente

AVG | COUNT | MAX | MIN | STDEV | STDEVP | VAR | VARP | SUM

Gibt die auszuführende Aggregation an. Mit der COMPUTE-Klausel werden folgende Zeilenaggregatfunktionen verwendet:

Zeilenaggregatfunktion Ergebnis

AVG

Durchschnitt der Werte in einem numerischen Ausdruck

COUNT

Anzahl von ausgewählten Zeilen

MAX

Höchster Wert im Ausdruck

MIN

Niedrigster Wert im Ausdruck

STDEV

Statistische Standardabweichung aller Werte im Ausdruck

STDEVP

Statistische Standardabweichung der Population für alle Werte in dem Ausdruck

SUM

Summe der Werte in einem numerischen Ausdruck

VAR

Statistische Varianz aller Werte im angegebenen Ausdruck

VARP

Statistische Varianz der Population für alle Werte in dem Ausdruck

Für COUNT(*) gibt es kein Äquivalent. Um die Summeninformationen zu erhalten, die von GROUP BY und COUNT(*) erzeugt werden, können Sie eine COMPUTE-Klausel mit BY verwenden.

Diese Funktionen ignorieren NULL-Werte.

Das DISTINCT-Schlüsselwort darf nicht zusammen mit den Zeilenaggregatfunktionen verwendet werden, wenn diese mit der COMPUTE-Klausel angegeben werden.

Wenn Sie Summen oder Mittelwerte von ganzen Zahlen berechnen, behandelt Microsoft SQL Server 2005-Datenbankmodul das Ergebnis als Wert vom Datentyp int. Dies gilt auch, wenn die Spalte den Datentyp smallint oder tinyint aufweist. Weitere Informationen zu den Rückgabetypen von Summen- oder Mittelwertdaten finden Sie unter SUM (Transact-SQL) und AVG (Transact-SQL).

ms181708.note(de-de,SQL.90).gifHinweis:
Um Überlauffehler in ODBC- und DB-Library-Programmen zu vermeiden, sollten Sie alle Variablen für die Ergebnisse von Mittelwerten oder Summen mit dem Datentyp int deklarieren.

Ausdruck (expression)

Ein Ausdrücke (Transact-SQL), wie z. B. der Name einer Spalte, die berechnet wird. expression muss in der Auswahlliste aufgeführt werden und mit einem der Ausdrücke in der Auswahlliste identisch sein. Ein in der Auswahlliste angegebener Spaltenalias kann nicht in expression verwendet werden.

ms181708.note(de-de,SQL.90).gifHinweis:
Daten vom Datentyp ntext, text oder image können nicht in einer COMPUTE- oder COMPUTE BY-Klausel angegeben werden.

BY expression

Generiert Gruppenwechsel und Untersummen im Resultset. expression ist eine identische Kopie von order_by_expression in der zugehörigen ORDER BY-Klausel. Normalerweise handelt es sich hierbei um einen Spaltennamen oder einen Spaltenalias. Es können mehrere Ausdrücke festgelegt werden. Werden nach BY mehrere Ausdrücke aufgeführt, wird eine Gruppe in Untergruppen aufgeteilt und die Aggregatfunktion auf jede Gruppierungsebene angewendet.

In Verbindung mit COMPUTE BY müssen Sie immer eine ORDER BY-Klausel verwenden. Die Ausdrücke müssen identisch mit den nach Ausführung von ORDER BY aufgeführten Spalten oder eine Teilmenge dieser Spalten sein und dieselbe Reihenfolge aufweisen. Wenn z. B. die ORDER BY-Klausel ORDER BY a, b, c lautet, treffen für die COMPUTE-Klausel eine oder alle der folgenden Aussagen zu:

COMPUTE BY a, b, c
COMPUTE BY a, b
COMPUTE BY a
ms181708.note(de-de,SQL.90).gifHinweis:
In einer SELECT-Anweisung mit einer COMPUTE-Klausel hat die Reihenfolge der in der SELECT-Liste aufgeführten Spalten Vorrang vor der Reihenfolge der Aggregatfunktionen in der COMPUTE-Klausel. ODBC- und DB-Library-Programmierer müssen dies beachten, damit sich die Ergebnisse der Aggregatfunktion an der richtigen Stelle befinden.

Sie können COMPUTE nicht in einer SELECT INTO-Anweisung verwenden, da Anweisungen mit COMPUTE Tabellen generieren und ihre Ergebnisse nicht in der Datenbank gespeichert werden. Daher werden keine der von COMPUTE erstellten Berechnungen in der mit der SELECT INTO-Anweisung erstellten neuen Tabelle angezeigt.

Sie können die COMPUTE-Klausel nicht verwenden, wenn die SELECT-Anweisung Teil einer DECLARE CURSOR-Anweisung ist.

Beispiele

A. Verwenden von COMPUTE in einer Abfrage, um Summen zurückzugeben

Im folgenden Beispiel verwendet die SELECT-Anweisung eine einfache COMPUTE-Klausel, um ein Gesamtergebnis für die Summe von SubTotal und TotalDue aus der SalesOrderHeader-Tabelle zu erstellen.

USE AdventureWorks;
GO
SELECT CustomerID, OrderDate, SubTotal, TotalDue
FROM Sales.SalesOrderHeader
WHERE SalesPersonID = 35
ORDER BY OrderDate 
COMPUTE SUM(SubTotal), SUM(TotalDue);

B. Verwenden von COMPUTE in einer Abfrage, um Summen zurückzugeben

Im folgenden Beispiel verwendet die SELECT-Anweisung eine COMPUTE-Klausel, um Gesamtergebnisse pro Verkäufer für die Summe von SubTotal und TotalDue aus der SalesOrderHeader-Tabelle zu erstellen.

USE AdventureWorks;
GO
SELECT SalesPersonID, CustomerID, OrderDate, SubTotal, TotalDue
FROM Sales.SalesOrderHeader
ORDER BY SalesPersonID, OrderDate 
COMPUTE SUM(SubTotal), SUM(TotalDue) BY SalesPersonID;

Siehe auch

Verweis

SELECT (Transact-SQL)
ORDER BY-Klausel (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005