If your custom SQL is set up like:
CATEGORY = [PARAMETER 1]
I can't see any way around your issue. If you set up your custom SQL like:
CATEGORY IN ([PARAMETER 1])
you might be able to build a parameter that includes all categories? Your users would still need to know to select this "all" value of course.
This probably isn't optimal from a DBA perspective, and I haven't tested it out in Tableau, but, in theory, it should work.
Why parameter and not a regular filter?
Custom SQL will be wrapped in additional SELECT statement but any reasonable backend will easily push that filter through.