I have two functions. I need to decide whether to join with these two based on a BIT Value.
x
ON APEL.data_Period_dataination_Lookup_ID = CCEL.data_Period_dataination_Lookup_ID
INNER JOIN markcommon.GetPredecessordatadataIds() AS PIDS
IF @Combined_Flag=1
BEGIN
ON PIDS.data_Period_dataination_Identifier = APEL.data_Period_dataination_Identifier
AND PIDS.data_Period_Identifier = APL.data_Period_Identifier
END
Basically
if BIT=0 join with function 1 else join with function 2
I tried putting an IF Clause .. but it does not seem to work. What is the proper way to do it?
Advertisement
Answer
Just add your static condition as part of the join condition and use a LEFT JOIN
to ensure it works with the missing row. You can then use a case
expression in your select to obtain the correct column e.g.
SELECT
CASE WHEN F1.id IS NOT NULL THEN F1.MyColumn ELSE F2.MyColumn END
FROM
LEFT JOIN markcommon.Function1() AS F1
ON @Combined_Cohort = 1
AND {The rest of the join conditions}
LEFT JOIN markcommon.Function2() AS F2
ON @Combined_Cohort = 0
AND {The rest of the join conditions}