Si en la tabla comunicación siempre hay dos registros por cada cliente, con tipos diferentes, el siguiente código puede ayudarte:
declare
@Rut nvarchar(12)
set @Rut = '81785200-9'
SELECT cliente.rut, cliente.razon_social, cliente.nombre_fantasia,
comunicacion_min.tipo as tipo1, comunicacion_min.numero as numero1,
comunicacion_max.tipo as tipo2, comunicacion_max.numero as numero2,
Direccion.direccion,
Direccion.comuna, Direccion.ciudad
FROM cliente
INNER JOIN (select codigo_cliente, tipo, codigo_direccion, min(numero) numero from comunicacion GROUP BY codigo_cliente, tipo, codigo_direccion ) comunicacion_min
ON cliente.codigo_cliente = comunicacion_min.codigo_cliente
INNER JOIN (select codigo_cliente, tipo, codigo_direccion, max(numero) numero from comunicacion GROUP BY codigo_cliente, tipo, codigo_direccion) comunicacion_max
ON cliente.codigo_cliente = comunicacion_max.codigo_cliente
INNER JOIN Direccion ON comunicacion_min.codigo_direccion = Direccion.codigo_direccion
WHERE cliente.rut = @Rut