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进行匹配。我尝试了几种语法变体,但无法正常工作。
我也看到过类似的问题,但这并没有帮助我。
使用 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)