年で区別される計算された属性を含むクエリを作成しようとしています。2007 年から現在の年まで。私のSQLがどのように見えるかの簡単な例:
SELECT users.id as id
users.name as name
SUM(CASE WHEN posts.approved = 1) AND posts.created_at BETWEEN '2007-01-01 00:00:00 +0100' AND '2007-12-31 23:59:59 +0100' THEN posts.ratings ELSE 0 END) as approved_rating_2007
SUM(CASE WHEN posts.approved = 0) AND posts.created_at BETWEEN '2007-01-01 00:00:00 +0100' AND '2007-12-31 23:59:59 +0100' THEN posts.ratings ELSE 0 END) as rejected_rating_2007
SUM(CASE WHEN posts.approved = 1) AND posts.created_at BETWEEN '2008-01-01 00:00:00 +0100' AND '2008-12-31 23:59:59 +0100' THEN posts.ratings ELSE 0 END) as approved_rating_2008
SUM(CASE WHEN posts.approved = 0) AND posts.created_at BETWEEN '2008-01-01 00:00:00 +0100' AND '2008-12-31 23:59:59 +0100' THEN posts.ratings ELSE 0 END) as rejected_rating_2008
etc...
FROM users
LEFT OUTER JOIN posts ON posts.user_id = users.id
2007 年から current_year までのレコードを常に含む何らかのループでそれを記述する方法はありますか?