sql >> データベース >  >> RDS >> Sqlserver

親と子を同じテーブルから選択

    これには、再帰的な CTE (Common Table Expression) を使用する必要があります:

    -- define the recursive CTE and give it a name
    ;WITH Hierarchy AS
    (
        -- "anchor" - top-level rows to select, here those with ManagerId = 0
        SELECT EmpId, EmpName, NULL AS 'MgrId', CAST(NULL AS NVARCHAR(50)) AS 'MgrName', 1 AS 'Level'
        FROM dbo.Emp
        WHERE ManagerId = 0
    
        UNION ALL
    
        -- recursive part - join an employee to its manager via ManagerId -> mgr.EmpId
        SELECT e.EmpId, e.EmpName, mgr.EmpId, mgr.EmpName, mgr.Level + 1 AS 'Level'
        FROM dbo.Emp e
        INNER JOIN Hierarchy mgr ON e.ManagerId = mgr.EmpId
    )
    SELECT * FROM Hierarchy
    


    1. MySQLエラーコード:1064。SQL構文にエラーがあります

    2. MySQL>テーブルが存在しません。しかし、それはします(またはそうすべきです)

    3. SSIS の UPSERT

    4. MySQLの結果をカウントする方法は、多くのスルー関係になります