Reputation: 645
I want to write an update query which joins 2 tables based on different Case conditions
Update Table1
Set ID = Case when T1.value1 < 0
then T2.ID ------Join on value1 between T2.valueTo and T2.ValueFrom
when T1.value2 > 0
then T2.ID -------Join on value2 between T2.valueTo and T2.ValueFrom
from Table1
Join Table2 t2 on value1 between T2.valueTo and T2.ValueFrom OR value2 between T2.valueTo and T2.ValueFrom
The above query doesn't work. Is there a way I can write which join should work based on the case expression.
Upvotes: 1
Views: 39
Reputation: 311768
You could use two joins, one for each condition:
Update Table1
Set ID = Case when T1.value1 < 0
then T2.ID ------Join on value1 between T2.valueTo and T2.ValueFrom
when T1.value2 > 0
then T3.ID -------Join on value2 between T2.valueTo and T2.ValueFrom
from Table1
Join Table2 t2 on value1 between T2.valueTo and T2.ValueFrom
Join Table2 t2 on value2 between T3.valueTo and T3.ValueFrom
Upvotes: 1