podria ser algo asi:
Código SQL:
Ver originalDECLARE @query VARCHAR(MAX)
SET @query='SELECT tabla1.campo1
FROM (tabla1 INNER JOIN tabla2 ON (
(tabla2.campo2 = tabla1.campo2 AND tabla2.campo5 >= tabla1.campo) OR
(tabla2.campo3 = tabla1.campo3 AND tabla2.campo6 >= tabla1.campo) OR
(tabla2.campo4 = tabla1.campo4 AND tabla2.campo7 >= tabla1.campo))
INNER JOIN tabla3 ON tabla3.id = tabla1.idtabla3 AND tabla3.fechainicial <= 'la fecha buscada'
INNER JOIN tabla4 ON tabla3.id = tabla4.idtabla3
AND tabla3.fechafinal >= 'la fecha buscada')'
IF (SELECT campo FROM tabla)=1 THEN
SET @query=@query + 'INNER JOIN tabla5 ON tabla5.id = tabla2.id_tabla5 AND tabla5.idtabla4 = tabla1.idtabla4'
SET @query='WHERE tabla2.id = valorbuscado
GROUP BY tabla1.campo1 '
EXEC sp_executesql @query