JOIN conditionnel dans SQL Server

Je voudrais modifier la jointure des tables en fonction des parameters de passage à une procédure stockée. En fonction du paramètre passant, la jointure doit être effectuée.

Comment puis-je y arriver?

Si vous souhaitez joindre différentes colonnes en fonction de votre condition, utilisez cette

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

essaye ça. Je suppose que vous devez sélectionner des valeurs à partir de tables différentes en fonction du paramètre d'input.

 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