Reporting Table Design
I would do something like this:

period_start_on date
period_duration interval
position        int -- position of this row in the year,
                    -- e.g. 1 for first Monday of Oct,
                    -- 2 for 2nd Monday, etc.
values ...
primary key(period_start_on, period_duration)
check(position &gt;= 1 and position &lt; 40)


Then if you want December only, you use WHERE period_duration = '1d' and period_start_on &gt;= '2012-12-01' AND period_start_on &lt; '2013-01-01'. If you want to compare two years, you JOIN using position:

SELECT y1.*, y2.*
FROM   the_table y1
  JOIN the_table y2 USING (position)
WHERE y1.period_start_on &gt;= '2011-01-01' AND y1.period_start_on &lt; '2012-01-01'
  AND y2.period_start_on &gt;= '2012-01-01' AND y2.period_start_on &lt; '2013-01-01'