且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

检索员工,报告经理和高级报告经理

更新时间:2023-02-05 11:39:01

如果我理解正确你有一个与递归查询 [ ^ ]。如果您点击该链接,您将找到使用完全相同模型的示例(employee-> manager)。



要使查询适应您的示例,结果将看起来像这样:

If I understood you correctly you have a homework assignment related to the recursive queries[^]. If you follow the link you will find the example that uses exactly the same model (employee->manager).

To adapt the query to your example the result will look something like this:
;WITH DirectReports (EmployeeName, EmployeeManager, Level)
AS
(
-- Anchor member definition
    SELECT e.EmployeeName, 0 AS Level
    FROM HR AS e
    WHERE e.ReportingManagerName IS NULL
    UNION ALL
-- Recursive member definition
    SELECT e.EmployeeName, 
        Level + 1
    FROM HR AS e
    INNER JOIN DirectReports AS d
        ON e.ReportingManagerName = e.EmployeeName
)
-- Statement that executes the CTE
SELECT EmployeeName, EmployeeManager, Level
FROM DirectReports
ORDER BY EmployeeName;


此查询解决了我的问题问题



This query solved my problem

declare  @Reporties table (EmployeeName varchar(50), Reporting_Manager varchar(50))

insert @Reporties (EmployeeName,Reporting_Manager)(
    SELECT H.EmployeeName, H.ReportingManagerName
    FROM HR AS H
    UNION ALL
   select HR2.EmployeeName,HR3.EmployeeName
from 
		HR HR1, HR HR2, HR HR3
where 
		HR1.EmployeeName= HR2.ReportingManagerName
	and HR1.ReportingManagerName = HR3.EmployeeName
)
SELECT distinct EmployeeName, Reporting_Manager
FROM @Reporties
ORDER BY EmployeeName