Quote: "The user needs to run a report. And they want 4 different ways to run it (common in my workplace)."
You should still use a Stored Procedure for this, 2 reasons (that I kniow of)...
1. They are pre-compiled, so the optimisation is only done once (in most instances). Filtering is still using the same methodology each time, just on different records, particularly if your data is evenly distributed.
2. Once cached, all users running the same report can use the cached Stored Procedure.
Stored Procedures can (and usually are) parameterised, so selection criteria is not an issue.
User reports are actually a good example of when
not to use inline SQL. Yes, I had the same preconceived misconception too. Generally, you are handling larger amounts of data, and this is where Set theory excels.
See, 3 days down and I already think I'm an expert. I'll have forgotten it all by next week