2014-01-20 3 views
0

У меня есть запрос SQL, который использует внутреннее соединение с таблицей t1, который имеет два столбца ID и FID, в хранимой процедуре есть две переменные @ID и @FID, Inner присоединиться в качествеДинамический запрос с INNER JOIN и в SQL Server 2005

Inner Join t1 on t1.ID = @ID and t1.FID = @FID 

Теперь проблема в том, что я хочу сделать ее динамичной. Если FID из таблицы t1 равно нулю, то я должен применяться только идентификатор, соответствующий части, как

Inner Join t1 on t1.ID = @ID 

В противном случае он должен быть оригинальным

Inner Join t1 on t1.ID = @ID and t1.FID = @FID 
+2

Не гуру SQL, а простое изменение на '(t1.FID = @FID ИЛИ t1.FID IS NULL)' work? – Mike

+0

Слушайте Майка. Структура JOIN похожа на предложение WHERE. Вы можете делать там всевозможные вещи. – Bill

ответ

0

выше часть должна быть переписана следующим образом:

Inner Join t1 on t1.ID = @ID and ISNULL(t1.FID,@FID) = @FID 

Обратите внимание, что я предполагаю, что @FID не является полем с ошибкой.

Смежные вопросы