首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AdventureWorks层次结构

AdventureWorks层次结构
EN

Stack Overflow用户
提问于 2010-10-30 20:30:20
回答 1查看 476关注 0票数 0

确定员工经理的完整层次结构的查询是什么?

示例: Alex是输入

Sara (经理级别1) James(经理级别2) David(经理级别3) Alex(简单员工)

EN

Stack Overflow用户

回答已采纳

发布于 2010-10-30 22:58:21

代码语言:javascript
运行
复制
DECLARE @Hierarchy TABLE (
    ID int,
    Manager int,
    Level int);


WITH Hierarchy(ID, Manager, Level) AS (
    SELECT EmployeeID, ManagerID, 0
    FROM HumanResources.Employee

    JOIN Person.Contact
    ON Contact.ContactID = Employee.ContactID

    WHERE FirstName = N'Alex'


    UNION ALL

    SELECT EmployeeID, ManagerID, Level + 1
    FROM HumanResources.Employee

    JOIN Hierarchy
    ON Manager = EmployeeID)

INSERT @Hierarchy

SELECT *
FROM Hierarchy


DECLARE @HighestLevel int

SELECT @HighestLevel = MAX(Level)
FROM @Hierarchy

DECLARE Hierarchy CURSOR FOR
    SELECT
        FirstName + 
        N'(' + 
        CASE
            WHEN Level = 0
            THEN N'Simple Employee'
            ELSE
                N'Manager - Level ' + 
                CAST(@HighestLevel - Level + 1 AS varchar) END + 
        N')'
    FROM HumanResources.Employee

    JOIN @Hierarchy
    ON ID = EmployeeID

    JOIN Person.Contact
    ON Contact.ContactID = Employee.ContactID

    ORDER BY Level DESC


DECLARE @Employee nvarchar(max)
DECLARE @Result nvarchar(max)

SET @Result = N''


OPEN Hierarchy

FETCH Hierarchy
INTO @Employee

WHILE @@FETCH_STATUS = 0 BEGIN
    SET @Result = @Result + N' ' + @Employee

    FETCH Hierarchy INTO @Employee
END

CLOSE Hierarchy
DEALLOCATE Hierarchy


PRINT @Result
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4058702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档