This would be the fastest approach since it can utlize any present index on OrderDateSELECT DATEADD(YEAR, DATEDIFF(YEAR, 400, GETDATE()), 0) AS PreviousYearFirstDate, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0) AS CurrentYearFirstDate, DATEADD(YEAR, DATEDIFF(YEAR, -1, GETDATE()), 0) AS NextYearFirstDate SELECT Store, SUM(CASE WHEN OrderDate >= PreviousYearFirstDate AND OrderDate < ThisYearFirstDate THEN Price ELSE 0 END) AS PreviousYear, SUM(CASE WHEN OrderDate >= CurrentYearFirstDate AND OrderDate < NextYearFirstDate THEN Price ELSE 0 END) AS CurrentYearFROM OrdersWHERE OrderDate >= PreviousYearFirstDate AND OrderDate < NextYearFirstDateGROUP BY Store
E 12°55'05.63"N 56°04'39.26"