SQL Server 2005 - 在存储过程中使用CASE

时间:2011-01-17 12:04:42

标签: sql-server-2005

我在存储过程中使用了一个select语句。我需要做的就是基于我要使用RIGHT JOIN或INNER JOIN的参数值。请有人帮助我实现这一目标。非常感谢提前..

SELECT FLD1, FLD2  
FROM TBL1 C (NOLOCK)    
     CASE
       WHEN @SHOW = 156 THEN INNER
       ELSE RIGHT JOIN TBL2 IC (NOLOCK) ON C.FLD3 = IC.FLD4   
     END

这是对的吗?这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以使用IF语句:

DECLARE @Param VARCHAR(10)
SET @Param = 'RIGHT'

IF (@Param = 'RIGHT')
    SELECT t1.Something
    FROM Table1 t1
        RIGHT JOIN Table2 t2 ON t1.ID = t2.ID
    WHERE ...
ELSE IF (@Param = 'INNER')
    SELECT t1.Something
    FROM Table1 t1
        INNER JOIN Table2 t2 ON t1.ID = t2.ID
    WHERE ...

或者可以作为一个SELECT(不一定是最佳性能,一定要测试)完成,例如:

SELECT t1.Something
FROM Table1 t1
    RIGHT OUTER JOIN Table2 t2 ON t1.ID = t2.ID
WHERE (@Param = 'RIGHT') OR (@Param = 'INNER' AND t1.ID IS NOT NULL)

答案 1 :(得分:0)

有关案例陈述的足够信息,this should get you started