Efter lite trixande har jag äntligen installerat nästa version av SQL server, Denali. När det…
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.