Есть ли такая вещь, как условное объединение:
SELECT *
FROM TABLE1 A
IF (a=='TABLE2') THEN INNER JOIN TABLE2 B ON A.item_id=B.id
ELSE IF (a=='TABLE3') THEN INNER JOIN TABLE3 C ON A.item_id=C.id
Хотя a - это поле в TABLE1.
Мне нравится использовать это в хранимых процедурах без использования динамического sql (без написания запросав виде строки и EXEC (@query)).
РЕДАКТИРОВАТЬ: я не могу написать:
IF (a=='TABLE2) THEN queryA
ELSE IF (a=='TABLE3') THEN queryB
, потому что поле a TABLE1.