I don't have your table structures, but I'd like to present an alternate way. Instead of relying on the data that's there, create a table of months you want to report and then update it from your data table. This will use a tally table to populate a temp table with one row per month going back 13 months from a base date. If you aren't familiar with tally tables yet, check out the article at http://www.sqlservercentral.com/articles/T-SQL/62867/ and take the time to get familiar with them. They will change the way you look at data.
DECLARE @dtmBase datetime = '11/01/2013';
IF OBJECT_ID('tempdb.dbo.#tblMonths', 'u') IS NOT NULL DROP TABLE #tblMonths;
CREATE TABLE #tblMonths (
ID Integer not null identity (1, 1),
Start Datetime not null,
TheCount Integer);
INSERT INTO #tblMonths(Start, TheCount)
SELECT DATEADD(month, -t.N + 1, @dtmBase), 0
FROM Tally1K t
WHERE t.N <= 13
ORDER BY 1 DESC;
You can then update #tblMonths.TheCount from your data table using the dates in your #tblMonths table. If you have the date field indexed, I expect that it would perform acceptably.