Я новичок в разработке баз данных, и у меня есть хранимая процедура, где мне нужно делать некоторые INNER JOINs для таблиц только при условии выполнения условия. Ниже приведена более короткая версия моего сложного запроса.SQL Server - Добавить условное внутреннее соединение
IF (testFunction(@UserId)) = 0
select C.AwardId, C.ProgramName, Count(ClientId) as Intakes from Client C
where C.Id = @ClientId
group by C.AwardId, C.ProgramName...
ELSE
select C.AwardId, C.ProgramName, Count(ClientId) as Intakes from Client C
INNER JOIN UserRoleEntity URE ON C.AwardId = URE.EntityId
INNER JOIN UserRole UR ON URE.UserRoleId = UR.Id AND UR.CDPUserId = @UserId
where C.Id = @ClientId
group by C.AwardId, C.ProgramName...
END
В основном, его же ВЫБРАТЬ запрос в обоих «IF» и «ELSE» за исключением того, что мне нужно сделать внутреннее соединение на 2 таблицы, когда условие IF не выполнено. Вместо того, чтобы повторять запрос как в «IF», так и «ELSE», существует ли способ сделать его одним запросом, не переходя на динамический запрос?
Спасибо!
Я предполагаю, что соединения выполняют дополнительную фильтрацию? –