DBlanks answer is probably best, I haven't used cross tabs in Crystal, but if you don't want to use cross tabs...and I would give them a try...or they don't work for you, you can always try...shared variables
You could create an array and increment it (I haven't used arrays, but this would seem to be a perfect example for me to learn), but without arrays you would have your 12 shared variables.
shared numbervar month1;
shared numbervar month2; etc
since this is a report summary type situation, you don't need to reset them to 0, you just need to increment and display.
Incrementing would be something like:
shared numbervar month1;
shared numbervar month2; etc
//compare your dates, like you did for the report and add the numbers
//if the value was for month2 the addition would look like:
month2 := month2 + {table.countField};
the display formula would be very similar but would be just 1 of the variables. The one for month2 would look like;
shared numbervar month2
Hope this helps. It is more of a framework then exact codes, but should get you started down the path...if you choose not use crosstabs.