Here's a "month" calculation first posted by Comment that may prove useful to you:
cMonth : DateField - Day(DateField) + 1
This returns the date of the first day of the month for any date in datefield.
There are several ways that can be used to get your comparitive columns of data, but the details depend on the structure of your data.
If you have a Data table like this:
Then a series of one row portals all based on this relationship:
ReportTable::CompanyID = Data::CompanyID //sort relationship by cMonth
can be set up with the first row showing Row 1, the second showing row 2 and so forth to give monthly columns of data.
This is just one general approach, there are variations on this you may need to use depending on your data and your report's requirements.