Dal tuo esempio, sembra che tu voglia che la prima colonna contenga qualsiasi name
viene prima in ordine alfabetico, quindi ho usato un <
quando si unisce il tavolo a se stesso.
select count(*), t1.Name, t2.Name
from
tblThings t1 join
tblThings t2 ON t1.ID = t2.ID AND t1.Name < t2.Name
group by t1.Name, t2.Name
Ed ecco la query in azione per dimostrare che non sono pazzo.