You are correct, archief_month <=archief_verwacht_month are 2 fields in a table which should be analyzed per row of this table, because they both belong to 1 fact. So I agree with your first reply. (but then, not off course with your second right?)
reporting date is a global variable, independent of tables.
yes all dates are in the correct format, a month is the first day of the month like 1-1-2011
I will try also your second one, but in theory is was a wrong one because of the row by row comparison?
I think the second one could also work using an advanced search for the element_set (as is), though I am not sure if the performance will be much better than using the if() function. Just give it a try...