Código SQL
[-]SELECT dbo.dtInstituciones.NombreLargo, -- en el group by
dbo.dtInstituciones.NombreCorto, -- en el group by
first(dbo.dtDirecciones.ID),
first(dbo.dtDirecciones.ID_institucion),
first(dbo.dtDirecciones.Calle)
FROM dbo.dtInstituciones INNER JOIN
dbo.dtDirecciones ON dbo.dtInstituciones.ID =
dbo.dtDirecciones.ID_Institucion
GROUP BY dbo.dtInstituciones.NombreLargo, dbo.dtInstituciones.NombreCorto
Cuando quieres hacer algo similar, siempre tendrás que utilizar funciones de agrupación. En este caso, y como comentabais anteriormente, si una institución tiene 2 direcciones siempre saldrá dos veces. Para evitarlo, utiliza GROUP BY. Agrupas por los campos que quieres que sólo salgan una vez, el resto , función de grupo. En este caso yo he utilizado first, que muestra la primera que encuentra, podrías usar last, y si el campo es numérico first - primero, last - ultimo, sum- suma, average - media, min -minimo o max - maximo...
Ten en cuenta que cuando uses Group by cualquier campo que no tenga una función de las antes indicadas, seberá aparecer detrás del group by.
Espero haberte ayudado.
Un saludo