One approach is to build a calculated field such as;
IF [parameterPeriod] = 'Month' and DATETRUNC('month',Now()) = DATETRUNC('month',[OrderDate]) THEN SALES
ELSEIF [paramterPeriod] = ..........................
Build it out for each of your scenarios and layer in the logic for the 'compare' metric. I'm not really clear what you're trying to achieve with the compare metric though - do you need two columns one with the 'actual' and one with the compare, or should it just influence the calculation?