我在存储过程中使用了一个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
这是对的吗?这样做的正确方法是什么?
答案 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。