【问题标题】:Getting all managers of the user by using CTE on SQL server在 SQL Server 上使用 CTE 获取用户的所有管理员
【发布时间】:2016-04-07 14:26:57
【问题描述】:

我尝试获取用户的所有高层管理人员。

例如。 Dan king(专家)--> Adam Lion(产品经理)--> Reina Ken(IT 主管)--> Michael Lorren(总监)--> Pat Deep(CEO)

我想在下面的一栏中展示 Dan King 的高层管理人员:

Adam
Reina
Michael
Pat

注意: Get all employees under manager with CTE 我使用了这个链接,我决定带经理的用户。

我尝试根据示例代码转换我的代码,但没有成功:

;WITH OS_MANAGERS AS 
(
SELECT USERID, MANAGERUSERID 
from OSMANAGERS
), Manager AS
(
SELECT USERID, MANAGERUSERID
from OS_MANAGERS
where [userID]='mbalasubrama'
union all
SELECT B.USERID, B.MANAGERUSERID
from Manager A
inner join OS_MANAGERS B ON A.MANAGERUSERID= B.USERID
)
select A.USERID , a.MANAGERUSERID
from OS_MANAGERS A
left join Manager B on A.USERID=B.USERID
where A.[userID]='mbalasubrama'

只有我看到用户的经理,其他顶级的不来

结果:

【问题讨论】:

标签: sql sql-server common-table-expression recursive-query


【解决方案1】:

您的代码似乎有点太复杂了...试试这个:

DECLARE @tbl TABLE(USERID INT,MANAGERUSERID INT,Name VARCHAR(100));
INSERT INTO @tbl VALUES
 (1,NULL,'CEO Pat')
,(2,1,'Director Michael')
,(3,2,'HIT Reina')
,(4,3,'PM Adam')
,(5,4,'Dan King');

WITH ManagerRecursive AS
(
    SELECT USERID, MANAGERUSERID,Name
    from @tbl
    where [userID]=5
    union all
    SELECT tbl.USERID, tbl.MANAGERUSERID,tbl.Name
    from ManagerRecursive AS MR
    INNER JOIN @tbl AS tbl ON tbl.USERID=MR.MANAGERUSERID
)
SELECT * FROM ManagerRecursive ;

结果

USERID  MANAGERUSERID   Name
5       4               Dan King
4       3               PM Adam
3       2               HIT Reina
2       1               Director Michael
1       NULL            CEO Pat

【讨论】:

    【解决方案2】:

    你可以看到我的代码:

    WITH ManagerRecursive AS
    (
       SELECT  [USERID],[MANAGERUSERID]
    
      FROM [EBA].[dbo].[OSMANAGERS]
    
       where [userID]='dking'
    
        union all
    
        SELECT tbl.USERID, tbl.MANAGERUSERID
    
        from ManagerRecursive AS MR
    
        INNER JOIN [EBA].[dbo].[OSMANAGERS] AS tbl ON tbl.USERID=MR.MANAGERUSERID
    
    )
    SELECT * FROM ManagerRecursive ; 
    

    结果:

    用户名 manageruserid

    dking   tkir
    tkir    skara
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-04
      • 1970-01-01
      • 2014-12-04
      • 1970-01-01
      相关资源
      最近更新 更多