4

このSQLFIDDLEのサンプル フィドルを作成しました

CREATE TABLE [dbo].[Users](
    [userId] [int] ,
    [userName] [varchar](50) ,
    [managerId] [int] ,
   )

INSERT INTO dbo.Users
    ([userId], [userName], [managerId])
VALUES
(1,'Darry',NULL),
(2,'Cono',1),
(3,'Abros',2),
(4,'Natesh',1),
(5,'Ani',3),
(6,'Raju',5),
(7,'Pinky',5),
(8,'Miya',4)

私の要件は、その特定のマネージャーの下にすべての従業員の階層を表示するようなものです

これが私が試したものです

WITH UserCTE AS (
  SELECT userId, userName, managerId, 0 AS EmpLevel
  FROM Users where managerId IS NULL

  UNION ALL

  SELECT usr.userId, usr.userName, usr.managerId, mgr.[EmpLevel]+1
  FROM Users AS usr
    INNER JOIN UserCTE AS mgr
      ON usr.managerId = mgr.userId where usr.managerId IS NOT NULL
)
SELECT * 
  FROM UserCTE AS u where u.ManagerId=3
  ORDER BY EmpLevel;

出力:

userName
--------
    Ani

私が期待している出力は、ManagerId 3 を指定すると、次の従業員が表示されるはずです

1.Abros
2.Ani
3.Raju
4.Pinky

誰でもこれを手伝ってもらえますか

4

1 に答える 1