Figure 7 Single Query Returning Yearly Totals
กก
DECLARE @CustomerID AS INT
SET @CustomerID = 3

WITH YearlyCustOrders(OrderYear, TotalValue)
AS
(
  SELECT YEAR(OrderDate), SUM(OrderQty*UnitPrice)
  FROM SalesOrderHeader AS H
    JOIN SalesOrderDetail AS D
      ON H.SalesOrderID = D.SalesOrderID
  WHERE CustomerID = @CustomerID
  GROUP BY YEAR(OrderDate)
)
SELECT Cur.*, Prev.TotalValue AS PrevTotalValue,
  (Cur.TotalValue/Prev.TotalValue - 1) * 100 AS Diff
FROM YearlyCustOrders AS Cur
  LEFT OUTER JOIN YearlyCustOrders AS Prev
    ON Cur.OrderYear = Prev.OrderYear + 1;