Hi Jaspreet,
Yes, your solution to generate label values from numeric values in Query expression editor (equivalent of decode SQL function) is probably enough for your need, easier and more understantable for not programmers, you are right; though it is often useful for a few values possible, otherwise it becomes quites unreadable because the Query expression editor doesn't support formatting styles (line breaks etc) so it is often misleading.
So if you do it frequently, you should define the replacement by a SQL User Function (see other posts and documentation about to proceed), in that way you will get a concise expression.
The main issue I see is that this is not dynamically change when there are products upgrades (builds can introduce new values of sysEnum).
Anyway, please test numeric values not strings, take care to the right syntax.
Regarding the solution of double-pass for filling context objects, yes, it is more useful for adding more complex data than this sysEnum replacement.
You can have a look into this report to see the idea of double-pass to add information in the context:
budgetEvolution
But take time to have a look on many other reports that do more complex things, it is useful to understand possibilities of context manipulation. Most of time it is done in JS activity so you can notice them easily. But sometimes it is done directly in JS script inside the Page activity, such as:
budgetOperationExpenses
in which you see the Expenses context enrichment in the script within the last Page activity of the report.
Regards
JS