SQL使用CASE的位置

Nat*_*Pet 2 sql

我有一个where子句

    ... Where TruckID IN (select VanID from Vantbl)
Run Code Online (Sandbox Code Playgroud)

我喜欢使用一个案例,因此它足够聪明

我有完整的后续行动

     ...  Where TruckID IN 
       CASE WHEN @VehicleType = 'VAN'
        THEN (select VanID from Vantbl)
      CASE WHEN @VehicleType = 'SUV'
       THEN (select SUVID from SUVtbl)
     END
Run Code Online (Sandbox Code Playgroud)

但似乎没有工作.我可以用任何方式让它像这样工作.

Mic*_*son 5

我推荐一个EXISTS而不是IN:

WHERE EXISTS (
    SELECT 1
    FROM Vantbl
    WHERE @VehicleType = 'VAN' AND TruckID = VanID
) OR EXISTS (
    SELECT 1
    FROM SUVtbl
    WHERE @VehicleType = 'SUV' AND TruckID = SUVID 
)
Run Code Online (Sandbox Code Playgroud)