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.
Der ROLLUP-Operator eignet sich zum Generieren von Berichten, die Teilergebnisse und Gesamtwerte enthalten. Der ROLLUP-Operator generiert ein Resultset, das mit den vom CUBE-Operator generierten Resultsets vergleichbar ist. Weitere Informationen finden Sie unter Zusammenfassen von Daten mit CUBE.
CUBE und ROLLUP unterscheiden sich wie folgt:
- CUBE generiert ein Resultset, das die Aggregate für alle Kombinationen aus Werten in den ausgewählten Spalten anzeigt.
- ROLLUP generiert ein Resultset, das die Aggregate für eine Hierarchie von Werten in den ausgewählten Spalten anzeigt.
So enthält eine einfache Inventory-Tabelle z. B. Folgendes:
Item Color Quantity
-------------------- -------------------- --------------------------
Table Blue 124
Table Red 223
Chair Blue 101
Chair Red 210
Die folgende Abfrage generiert einen Teilergebnisbericht:
SELECT CASE WHEN (GROUPING(Item) = 1) THEN 'ALL'
ELSE ISNULL(Item, 'UNKNOWN')
END AS Item,
CASE WHEN (GROUPING(Color) = 1) THEN 'ALL'
ELSE ISNULL(Color, 'UNKNOWN')
END AS Color,
SUM(Quantity) AS QtySum
FROM Inventory
GROUP BY Item, Color WITH ROLLUP
Item Color QtySum
-------------------- -------------------- --------------------------
Chair Blue 101.00
Chair Red 210.00
Chair ALL 311.00
Table Blue 124.00
Table Red 223.00
Table ALL 347.00
ALL ALL 658.00
(7 row(s) affected)
Wird das ROLLUP-Schlüsselwort in der Abfrage in CUBE geändert, ist das Resultset von CUBE identisch, mit der Ausnahme, dass am Ende die folgenden zwei zusätzlichen Zeilen zurückgegeben werden:
ALL Blue 225.00
ALL Red 433.00
Die CUBE-Operation hat Zeilen für mögliche Kombinationen aus Werten sowohl von Item als auch von Color generiert. So berichtet CUBE z. B. nicht nur alle möglichen Kombinationen aus Color-Werten in Verbindung mit dem Item-Wert Chair (Red, Blue und Red + Blue), sondern auch alle möglichen Kombinationen aus Item-Werten in Verbindung mit dem Color-Wert Red (Chair, Table und Chair + Table).
Die ROLLUP-Operation berichtet nicht alle möglichen Kombinationen aus Werten in der Spalte (den Spalten) links in der GROUP BY-Klausel für jeden Wert in den Spalten rechts. So berichtet ROLLUP z. B. nicht alle möglichen Kombinationen aus Item-Werten für jeden Color-Wert.
Das Resultset einer ROLLUP-Operation verfügt über einen vergleichbaren Funktionsumfang wie das Resultset, das von einer COMPUTE BY-Operation zurückgegeben wird. ROLLUP weist jedoch die folgenden Vorteile auf:
- ROLLUP gibt ein einzelnes Resultset zurück, während COMPUTE BY mehrere Resultsets zurückgibt, was die Komplexität von Anwendungscode erhöht.
- ROLLUP kann in einem Servercursor verwendet werden, COMPUTE BY hingegen nicht.
- Teilweise kann der Abfrageoptimierer effizientere Ausführungspläne für ROLLUP als für COMPUTE BY generieren.
Siehe auch
Konzepte
Zusammenfassen von Daten mit COMPUTE und COMPUTE BY