SQL Server 2012 - Analytische Funktionen

Mit dem neuen SQL Server 2012 werden auch einige neue analytische Funktionen eingefügt, die in Oracle teilweise schon seit Jahren bekannt sind. Zu diesen neuen Funktionen gehören: CUME_DIST PERCENT_RANK FIRST_VALUE LAST_VALUE PERCENTILE_CONT PERCENTILE_DISC LEAD LAG Auf die beiden letzten Funktionen möchte ich noch etwas näher eingehen, da ich diese in Auswertungen für besonders wertvoll erachte. Mit den beiden neuen analytischen Funktionen LEAD und LAG ist es nun ein leichtes Zeiträume miteinander zu vergleichen. Dies war vorher nur mit einiger Mühe und Self-Joins zu erreichen. Als Beispieldatenbank dient hierbei die AdventureWorks2008R2 Datenbank. Mit der LAG Funktion, kann man den aktuellen Zeitraum mit einem früheren Zeitraum vergleichen. Es werden also vorhergehende Zeilen in eine nachfolgende Betrachtung mit einbezogen. Hierzu folgendes Beispiel:
USE [AdventureWorks2008R2]
GO

SELECT 
    YEAR(QuotaDate) AS Verkaufsjahr
    , LAG(sum(SalesQuota)) OVER (ORDER BY YEAR(QuotaDate)) AS Vorjahresumsatz
    , sum(SalesQuota) AS Jahresumsatz
    , (sum(SalesQuota) - LAG(sum(SalesQuota), 1,0) OVER (ORDER BY YEAR(QuotaDate))) AS Differenz
FROM Sales.SalesPersonQuotaHistory
GROUP BY YEAR(QuotaDate)
GO
Man erhält somit folgendes Ergebnis: LAG_Result Die LEAD Funktion arbeitet im Gegenzug zur LAG Funktion genau anders herum. Zu einem bestimmten Zeitraum kann ein nachfolgender Zeitraum betrachtet werden. Hierzu werden nachfolgende Zeilen in die Betrachtung mit einbezogen. Folgendes Beispiel soll dies verdeutlichen:
USE [AdventureWorks2008R2]
GO

SELECT 
    YEAR(QuotaDate) AS Verkaufsjahr
	, sum(SalesQuota) AS Jahresumsatz
    , LEAD(sum(SalesQuota)) OVER (ORDER BY YEAR(QuotaDate)) AS Folgejahresumsatz
	, (sum(SalesQuota) - LAG(sum(SalesQuota), 1,0) OVER (ORDER BY YEAR(QuotaDate))) AS Differenz
FROM Sales.SalesPersonQuotaHistory
GROUP BY YEAR(QuotaDate)
GO
Als Ergebnis bekommt man nun dieses Resultat. LEAD_Result Ich denke, diese neuen Funktionen, sind nicht nur für Controller sehr wertvoll.