I object to deletion of this question, because there's no indication that the author has tried the suggested solution. Had he tried it, the code would be much smaller and more easily maintainable, such as:
SELECT a.Location, a.Category,
(select sum(value) from mytable where year=year(getdate()) -0 and a.location=mytable.location and a.category=a.category) As ThisYearSum,
(select sum(value) from mytable where year=year(getdate()) -1 and a.location=mytable.location and a.category=a.category) As LastYearSum,
(...)
FROM MyTable a
Recommendation: PAQ/No refund.