Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एक ही टेबल से माता-पिता और बच्चे का चयन करें

इसके लिए आपको एक पुनरावर्ती सीटीई (कॉमन टेबल एक्सप्रेशन) का उपयोग करना चाहिए:

-- 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. केवल SQL Server 2008 के साथ डेटा पुनर्स्थापित करें

  2. आंशिक CHAR कॉलम पर इंडेक्स बनाएं

  3. SQL WHERE क्लॉज मिलान मान अनुगामी रिक्त स्थान के साथ

  4. SQL सर्वर में ROW_NUMBER () कैसे काम करता है

  5. SQL परिणाम सेट को स्थानांतरित करें