This is too much to ask for from BO.

I presume u r using prompt in ur BO report.
First solution
if you are using DW then desing a fact table\tables to get the data in the format you want.
Second solution
if the date range is dynamic the u will have to perform all this at the report level. First you have to create number of variables in the designer.
2 variable with prompt for start date and end date.
variable using the above two to get the year month combination. once all the necessary variables are generated
create multiple data provider each pulling the king of information you desire
for example the first for YTD where you will use the variable for date range
second for mtd where you will use the year month range variable.
third for current month where you will use the end date
then link all these data provider based on the common dimension and then create a table to display the values you want to display.
the draw back here is that same information is pulled number of time. for example the query for YTD can also be used to calculate the MTD
but if the whole size of data returned is not much you can use the second solution.