SQL server Denali CTP3 – Löpande summering

Oopps! Upgrade your browser pretty please. Oopps! Upgrade your browser pretty please.

I nästa version av SQL server, codename Denali, har Microsoft implementerat utökat stöd för windowing functions (OVER clause), bland annat löpande summering. I nedanstående exempel så summeras LineTotal för varje rad inom en “SalesOrder” och vid varje ny SalesOrder nollställs summeringen. SELECT SalesOrderID, ProductID, OrderQty, UnitPrice, SUM(LineTotal) OVER(PARTITION BY SalesOrderID ORDER BY SalesorderDetailID) FROM Sales.SalesOrderDetail

Att göra löpande summering har tidigare varit mer komplicerat och mer ineffektivt, antingen genom Common table expression (CTE) och row_number eller genom cursors, vilket faktiskt var ett av de få tillfällen där cursors faktist var snabbare än set baserade operationer.