Según deduzco del comentario del SP quieres relacionar todos los contratos con los comerciales y los clientes y de los clientes los quieres todos tengan teléfono o no. No entiendo entonces los LEFT OUTER JOIN a las tablas de clientes y comerciales.
Solución propuesta:
Código SQL
[-]SELECT
Contratos.*
FROM
Contratos
INNER JOIN
Clientes LEFT OUTER JOIN TelefonosCli
ON TelefonosCli.CodCli_TelCli = Clientes.CodAut_Cli
ON Clientes.CodAut_Cli = Contratos.CodCli_Con
INNER JOIN Comerciales
ON Comerciales.CodAut_Com = Contratos.CodCom_Con
WHERE
(
( (Contratos.NumCon_Con LIKE '%' + @NumCon_sp + '%' )
AND (Contratos.FecCon_Con >= @FecIniCon_sp AND Contratos.FecCon_Con <= @FecFinCon_sp)
AND ((Contratos.ObsCon_Con LIKE '%' + @ObsCon_sp + '%') OR (Contratos.ObsCon_Con IS NULL))
)
AND
( ((Clientes.TipVia_Cli LIKE '%' + @TipVia_sp + '%')
AND (Clientes.DirCli_Cli LIKE '%' + @DirCli_sp + '%')
AND ((TelefonosCli.NumTel_telCli LIKE '%' + @NumTel_sp + '%') OR(TelefonosCli.NumTel_telCli IS NULL))
)
AND
(Comerciales.NomCom_Com LIKE '%' + @NomCom_sp + '%')
)
ORDER BY Contratos.TipCon_Con
Así te trae todos los contratos relacionados con los comerciales y con los clientes que tengan o no teléfono.
Por cierto....los dos lo tenéis mal....Amunt Valencia!..