2011-12-15 62 views
2

我想更改根據傳遞參數將表連接到存儲過程。基於傳遞參數應該完成連接。SQL Server中的條件連接

我該如何實現它?

+2

JOIN有多不同?你想加入不同的表格還是(一個或多個)不同的字段? – deroby 2011-12-15 09:28:27

回答

5

如果你想加入根據你的病情的不同列,使用此

SELECT * 
FROM tblA A 
JOIN tblB B 
ON A.col1 = 
    CASE WHEN <any condition> THEN B.col1   
    END 
0

嘗試。我想你需要根據輸入參數從不同表中選擇值。

DECLARE @tmpTable1 TABLE(ID INT,Name VARCHAR(5)) 
DECLARE @tmpTable2 TABLE(ID INT,Value INT) 
DECLARE @tmpTable3 TABLE(ID INT,Value INT) 

DECLARE @vchTableType VARCHAR(5) = '2' 
-- Possible values 2 fro table2 and 3 for table 3 

INSERT INTO @tmpTable1 VALUES 
(1,'A'), 
(2,'B'), 
(3,'C'), 
(4,'D'); 

INSERT INTO @tmpTable2 VALUES 
(1,100), 
(2,200), 
(3,300), 
(4,400); 

INSERT INTO @tmpTable3 VALUES 
(1,10), 
(2,20), 
(3,30), 
(4,40); 

SELECT 
        T1.ID 
        ,T1.ID 
        ,CASE @vchTableType WHEN '2' THEN T2.Value WHEN '3' THEN T3.Value ELSE -1 END Column1 
FROM    @tmpTable1 T1 

LEFT OUTER JOIN  @tmpTable2 T2 
ON     T1.ID = T2.ID 

LEFT OUTER JOIN  @tmpTable3 T3 
ON     T1.ID = T3.ID