When using inner joins, there will be a row for the combination of [decade]*[population]*[fact] rows that are returned by the join. So you're getting a row for every year within each decade for every decade, for every report date, and that's 62 rows per Report Date.
I think the easiest solution is adding a clause to the query that would be something like YEAR([StateFact$].[ReportDate]) = YEAR([Years$].[Year]). Think of your three tables like a triangle, where you've related X to Y and Y to Z, and you just need one more relate X to Z.