I have a query that returns a score for each month per company location. The months are specified per a given time span. The trouble is, not every company location will have data for every month within the time span.

Is there a way to modify the below query (perhaps using a correlated sub query) to return the score per location/month, or NULL if the location has no recorded monthly value?

select s.month, s.year, l.name, s.score
   from scores s
   inner join locations l on l.id = s.location_id and l.company_id = s.company_id
   where s.company_id = 22  
   and s.year*100+m between 201203 and 201207
   group by s.location_id, s.month, s.year
   order by s.year, s.month, l.name