To w teorii robi to o co pytasz, ale raczej źle podchodzisz do zagadnienia.
declare @EMP table (id int, ename nvarchar(100), deptNo int)
insert into @EMP values (1, 'smith', 1)
insert into @EMP values (2, 'jones', 1)
insert into @EMP values (3, 'clark', 1)
insert into @EMP values (4, 'nowak', 2)
insert into @EMP values (5, 'malinowski', 2)
select * from
(
SELECT distinct
id1 = case when prac.id < kier.id then prac.id else kier.id end,
id2 = case when prac.id < kier.id then kier.id else prac.id end
FROM @EMP Prac
INNER JOIN @EMP KIER ON PRAC.DEPTNO = KIER.DEPTNO
WHERE PRAC.id != KIER.id
) as uniquePairs
inner join @emp p on uniquePairs.id1 = p.id
inner join @emp k on uniquePairs.id2 = k.id
Zakładam że kierownikiem nie jest pierwszy lepszy który się nawinie, tylko umiesz na podstawie danych w bazie (jakiejś flagi, czy innych tabel) wskazać kto jest kierownikiem w departamencie (dziale).
Więc wybierasz listę kierowników, a następnie tą listę łączysz z pozostałymi pracownikami w dziale.
select m.Name as Kierownik, p.Name as Pracownik
from (select * from emp where isManager = 1) as m
inner join emp e on m.depNo = p.depNo and e.isManager = 0