Вы не можете сделать условное соединение таким образом.
Вы можете просто сделать обычный LEFT JOIN. Если ни одна строка не соответствует критериям присоединиться, эти столбцы будут NULL:.
Select *
from table a
left Join table b on a.id = b.id
left Join table c on a.id = c.id
left Join table d on a.id = d.id
Ь * столбцы могут быть NULL, или С * столбцы могут быть NULL, или D * столбцы могут быть NULL...
Если вам нужно выбрать первый ненулевой столбец, используйте COALESCE:
Select *, COALESCE(b.SOMECOLUMN, c.SOMECOLUMN, d.SOMECOLUMN) AS SOMECOLUMN
from table a
left Join table b on a.id = b.id
left Join table c on a.id = c.id
left Join table d on a.id = d.id
Как комментаторы сказали, если таблицы не существуют, это не работает. Я думаю, что я бы действительно выступал за продвижение и создание таблиц, чтобы ваши схемы всегда соответствовали ожиданиям. Динамический SQL - это боль для поддержки и отладки, а статические SQL и схемы могут быть опрошены, чтобы гарантировать, что они соответствуют ожиданиям с использованием метаданных (т.е. процедура или представление не будут действительны, если таблица отсутствует, а зависимости можно просмотреть явно)
+1 - Я бы добавил только эту ссылку: www.sommarskog.se/dynamic_sql.html – Lamak
Вам следует избегать использования здесь, а вместо этого следует использовать Object_ID. – Pankaj
@StackOverflow Пользователь: Не так. select * не имеет заметной разницы по имени поля: http://milambda.blogspot.com/2008/01/whats-wrong-with-count.html –