T-SQL-合并IN子句和CASE语句

gMa*_*Man 0 sql t-sql case sql-server-2008-r2

我需要做这样的事情:

select *
from  Table 
      inner join Few more tables
where t2.ID IN( case when @Param1 = 0 then 
                        (select ID FROM tbl10 WHERE ForeignKey = @param2) 
                else @Param1 end)
Run Code Online (Sandbox Code Playgroud)

因此,如果@ Param1为0,那么我希望某组值是一个匹配项(基于@ param2),如果其不为0,我只希望@ Param1进行匹配。我尝试了几种语法变体,但无法正常工作。

我也看到过类似的问题,但这并没有帮助我。

Tim*_*ter 5

使用 OR

SELECT * 
FROM   table1 t1 
       INNER JOIN table2 t2 
               ON t1.t1col = t2.t1col 
WHERE  ( @param1  <>  0  AND t2.id = @Param1 ) 
    OR ( @param1  =   0  AND t2.id IN (SELECT id 
                           FROM   tbl10 
                           WHERE  foreignkey = @param2) ) 
Run Code Online (Sandbox Code Playgroud)