Рассмотрим простое соединение:T-SQL: Условно присоединения с помощью параметра
Select TableB.*
From TableA
Inner Join TableB
On TableB.ID = TableA.ID
То, что я хочу сделать, это решить, какой стол, чтобы присоединиться к в зависимости от параметра. Хотя следующий синтаксис неверен, я написал только для иллюстрации того, что я после:
Select TableD.*
From TableA
Inner Join
[If @useTableC = 1 Then Join to TableC Else Join to TableB] As TableD
Оба TableB и TableC имеют одинаковые столбцы.
Как создать такой вид соединения. Имейте в виду, что этот пример на самом деле представляет собой небольшую часть гораздо большего запроса, поэтому вы не можете просто использовать инструкции If ... Else.
Большое спасибо!
Когда этот UNION выполнен и @useTableC = 1, SQL Server все еще проходит и обрабатывает ВСЕ записи в TableB? Если это так, это будет ужасная трата времени обработки. – AndroidDev
Нет штрафа за IO, @AndroidDev: когда '@useTableC = 1', SQL Server не читает ни одной строки TableB. –
Зачем ему не читать строки из TableB? Я не понимаю, как это возможно. Записи в TableB будут исключены только после их восстановления и THEN, где применяется предложение Where. – AndroidDev