数据表
问题:按字母顺序列出所有主管的姓名。如果主管有多于一名员工,则其姓名应只出现一次。
我的输入和输出:
预期输出:
SQL的绝对初学者和stackoverflow的新手,将非常感谢您提供的帮助
答案 0 :(得分:2)
您可以简单地做到:
select s.*
from staff s
where exists (select 1 from staff s2 where s.staffId = s2.supervisorid);
也就是说,选择所有主管。
答案 1 :(得分:0)
我认为您首先需要使用cte或temptable找出主管,然后使用它来选择名称,例如:
;with cte as ( --supervisors
select distinct s1.Id
from Staff s1
inner join Staff s2 on s1.Id=s2.SupervisorId
)
select s.Name
from Staff s
inner join cte on s.Id = cte.Id
order by s.Name
答案 2 :(得分:0)
您可以尝试以下查询:
SELECT MAX(Staff.Name) As SupervisorName
FROM Staff INNER JOIN Staff Sup
ON Staff.SupervisorID = Sup.StaffID
GROUP BY Staff.Name
ORDER BY Staff.Name ASC