• The server wide maxrecursion default is 100, irrespective of whether you join to a table or not.

    BOL: http://msdn.microsoft.com/en-us/library/ms175972.aspx

    More dangerous is that "if the recursive member query definition returns the same values for both the parent and child columns, an infinite loop is created" effectively the same as setting maxrecursion to 0, so good practice would be to specify the option for maxrecursion.

    Anyway, what you are doing is tiny - only 12 rows so none of this matters.

    Unless it ends up in a correlated subquery which of itself would be bad.

    If you are looking at something reusable then you may as well have a table with the monthnames and numbers, assuming the bizarre situation that you have a database with no dates in it. Given this is a paremeter for a report, then logically there must be dates in the data for it to be usable.

    In most SSRS parameter situations, it's even more robust to source the options from the data itself.

    Thanks for the article, it prompted me to read the rCTE BOL entry. 🙂