A COMPUTE segítségével összegző sort tudunk készíteni az eredménytáblához. Amikor a BY kulcsszót is használjuk, akkor a COMPUTE létrehoz megszakításokat és részösszegeket. Mindkét lehetőséget – BY nélküli, és vele együtt használatos COMPUTE feltételt – használhatjuk egyazon lekérdezésben.
Szintaxis
[ COMPUTE
{ { AVG | COUNT | MAX | MIN | STDEV | STDEVP
| VAR | VARP | SUM }
( expression ) } [ ,...n ]
[ BY expression [ ,...n ] ] ]
Paraméterek
AVG | COUNT | MAX | MIN | STDEV | STDEVP | VAR | VARP | SUM
Az összegzést határozzák meg. Ezek a sorösszegző függvények használhatók a COMPUTE feltétellel együtt:
| Sorösszegző függvény |
Eredmény |
| AVG |
A numerikus kifejezés értékek átlaga |
| COUNT |
A lekérdezett sorok száma |
| MAX |
A legnagyobb érték a kifejezésben |
| MIN |
A legkisebb érték a kifejezésben |
| STDEV |
Statisztikai standard szórás minden értékre a kifejezésben |
| STDEVP |
Statisztikai standard szórás populációja minden értékre a kifejezésben |
| SUM |
Minden érték összege a kifejezésben |
| VAR |
Statisztikai eltérés minden értékre a kifejezésben |
| VARP |
Statisztikai eltérés populációja minden értékre a kifejezésben |
Nem egyenértékű a COUNT(*) használatával. Hogy a GROUP BY és a COUNT(*) által készített összegző információt megtaláljuk, használjuk a COMPUTE kulcsszót BY nélkül. A függvény figyelmen kívül hagyja a null értékeket.
A DISTINCT kulcsszó nem engedélyezett, ha a COMPUTE segítségével sorösszegző függvényeket adunk meg. Amikor hozzáadunk, vagy átlagolunk integer értéket, az SQL szerver az eredményt int értékként kezeli, akár tinyint vagy smallint az oszlop típusa.
Egy kifejezés, mint például az oszlop neve, amelyre a számítást kezdeményezzük. A kifejezésnek meg kell jelennie az oszlop felsorolásban, és azonosnak kell lennie a felsorolásban lévő elemmel. Egy oszlop alias nem használható a kifejezésen belül.

ntext, text, vagy image típus nem használható a COMPUTE vagy COMPUTE BY feltétellel.
Létrehoz megszakításokat és részösszegeket. A kifejezés egy pontos másolata egy ORDER BY kifejezésnek, a megfeleltetett ORDER BY feltételben. Ez leginkább oszlop név vagy alias. Több kifejezés is megadható. Több kifejezés felsorolása a BY után, alcsoportokra tördeli a csoportokat és végrehajtja az összegző függvényt a csoportosítás valamennyi szintjén.
Ha COMPUTE BY-t használunk, akkor az ORDER BY feltételt is használnunk kell. A kifejezéseknek azonosaknak kell lenniük, vagy egy részüket fel kell sorolni az ORDER BY után, egyazon sorrendben.

COMPUTE használata esetén az oszlop lista sorrendje felülbírálja a COMPUTE összegző függvények sorrendjét. Fejlesztőknek figyelniük kell erre a szükségszerűségre, hogy az eredményeket megfelelő sorrendbe tegyék.
A COMPUTE feltételt nem használhatjuk SELECT INTO utasításban, ugyanis ezek az utasítások táblákat hoznak létre és az összegző sorok nem tárolhatók az adatbázisban. Emiatt bármilyen számítás a COMPUTE feltételben nem látszik a SELECT INTO által létrehozott új táblában.
Nem használhatjuk a COMPUTE feltételt akkor sem, ha egy DECLARE CURSOR utasítás része.
Példák
A példákhoz a Northwind adatbázist használjuk.
SELECT SupplierID, UnitPrice
FROM Products
ORDER BY SupplierID
COMPUTE SUM(UnitPrice)
A termékek szállító szerinti listájában az értékeket mutatja meg, a végén pedig egy összeget képez.
SELECT SupplierID, UnitPrice
FROM Products
ORDER BY SupplierID
COMPUTE SUM(UnitPrice) BY SupplierID
Itt minden szállítóhoz részösszegeket kapunk.
SELECT SupplierID, SUM(UnitPrice)
FROM Products
GROUP BY SupplierID
A COMPUTE BY funkció helyett használhatjuk a GROUP BY feltételt, amely egy eredményhalmazban jeleníti meg a csoportösszegeket.
SELECT SupplierID, CategoryID, UnitPrice
FROM Products
ORDER BY SupplierID, CategoryID
COMPUTE SUM(UnitPrice) BY SupplierID, CategoryID
Az utolsó példában többszörös csoportosításra láthatunk példát, itt a szállítókon belül kategóriák szerint is képződik részösszeg.