Это может работать, а может и не работать, в зависимости от того, какая БД используется .. Попробуйте ее.
Select * from ConditionalWhere
Where condition1 = 1
And condition2 = 1
AND CASE When (variable1 is null)
And ([a] is not null)
and ([b] is not null)
Then 1
When (variable1 is not null)
and ([a] is null)
and ([b] is null)
Then 1
Else 0
End = 1