Come ti ho scritto poco fa la clausola distinct si propaga a tutti i campi presenti nella select, quindi se anche il valore di un solo campo differisce da quello di un altro record, vengono considerati differenti.

Esempio banale

codice:
select distinct 'aaa','bbb','ccc'
union
select distinct 'aaa','bbb','ddd'
union
select distinct 'aaa','bbb','ccc'
Risultato
aaa bbb ccc
aaa bbb ddd