2012-04-19 9 views
1

に参加し、私は条件付きでこのような何か結合を実行できる方法があります:SQL Serverの+条件は

CREATE TABLE #Entity 
    ( 
    [AutoID] [int], 
    [Code] [nvarchar](50) NOT NULL, 
    ) 

    INSERT #Entity 
    EXEC Entity_GetEntitiesByUserId @UserID 

    DECLARE @Condition bit = 0 

    SELECT * FROM [Stuff] s 

     IF @Condition = 1 BEGIN 

     INNER JOIN 
     (
     SELECT Code as eCode from 
     #Entity 
     ) e 
     ON E.eCode = s.EntityCode 

     END 

     WHERE DeletedBy IS NULL 

おかげで。これは、あなたが欲しいものを論理的に行います

答えて

7

SELECT * 
FROM [Stuff] s 
WHERE 
DeletedBy IS NULL 
and (@Condition = 0 or s.EntityCode in (select E.code from #Entitye)) 
+3

私はこれが意図ではないと思います。 '@Condition = 1'のとき、結果には'#Entity'テーブルのカラムが含まれていなければなりません。私はOPのコードが「SELECT s。* FROM [Stuff] s ...」と読んでいると思います。 – onedaywhen

+1

@onedaywhen OPはs.entitycodeの複製である2番目のテーブルからe.ecodeだけを選択するので、 – Aprillion

+0

ちょうど今、条件が 'condition = 0 or ...'であることがわかりました –