This is quite simple and very powerful for doing dynamic filtering, letting the user decide what to filter on. Simple answer is that you need to override the Blockfetch with your own SQL Select statement that you build up by creating the where part of the clause based on which fields have values to filter.
The fields returned b the SQL select statement must be the same as the view that the blockfetch is under.
then in a blockfetch in the following edit points add the 2 lines of code
Edit Point Start set fetch position
Set FetchL<UsePosition> = <UsePosition.Override>
Edit Point Start set fetch position
Exec SQL Source code:<your source code object with SQL statement>
This should then work. You can of course dynamically build the SQL statement and pass it in as a parameter to the source code object.