Select ...
From Table_01 As t1
Join table_02 As t2
On t1.col = t2.col
Where Case
When @ID = 0 Then 1
When t2.ID = @ID Then 1
When @ID = -1 Then 0
Else 0
End = 1
Если это последнее условие должно превзойти другие два, вам нужно изменить порядок:
Select ...
From Table_01 As t1
Join table_02 As t2
On t1.col = t2.col
Where Case
When @ID = -1 Then 0
When @ID = 0 Then 1
When @ID = t2.ID Then 1
Else 0
End = 1
Конечно, другой способ, который может работать лучше (при условии @ID = -1
козыри):
Select ...
From Table_01 As t1
Join table_02 As t2
On t1.col = t2.col
Where @ID != -1
And ( @ID = 0 Or @ID = t2.ID )
Обновление на основе редактирования OP
Похоже, вы пытаетесь сделать что-то вроде следующего:
Select ...
From Table_01 As t1
Join table_02 As t2
On t1.col = t2.col
Where @ID != -1
And ( @Col1 = 0 Or @Col1 = t2.Col1 )
And ( @Col2 = 0 Or @Col2 = t2.Col2 )
And ( @ID = 0 Or @ID = t2.ID )