Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

Приоритетное условие соединения таблиц

$
0
0
Необходимо соединить 2 таблицы t1 и t2 по условию t1.Id = t2.t1Id(приоритетное условие),
либо по паре других полей(col1, col2), значения в которых составляют уникальную пару либо отсутствуют (рецессивное условие).
Т.е. хотелось бы построить что-то вроде:

select t1.col3, t2.col4
from t1
left join t2 on case when t2.t1ID is not null
			then t1.id = t2.t1ID 
			else t1.col1 = t1.col1 and t1.col2 = t1.col2
		   end	


Но получается пока только:

select t1.col3, coalesce(a.col4,b.col4)  
from t1
left join t2 a on a.t1Id = t1.ID
left join t2 b on b.col1 = t1.col1 and b.col2 = t2.col2


Есть ли вариант решения этой задачи без двойного join'a таблицы t2 ?

Сейчас выполняю запрос на SQL Server 2008 R2, но в принципе интересны варианты и для более поздних версий.

Viewing all articles
Browse latest Browse all 7251

Trending Articles