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

CTE के साथ सभी कर्मचारियों को प्रबंधक के अधीन प्राप्त करें

आप कुछ इस तरह की कोशिश कर सकते हैं

;WITH EmployeeTable AS 
(
SELECT 1 EmpId,0 ManagerId ,   5 Level ,'CEO' Value
UNION ALL SELECT 2,1,   4,'EMP'
UNION ALL SELECT 3,1,   4,'ORG'
UNION ALL SELECT 4,2,   3,NULL
UNION ALL SELECT 5,2,   3,NULL
UNION ALL SELECT 6,2,   2,NULL
UNION ALL SELECT 7,1,   1,NULL
UNION ALL SELECT 8,5,   0,NULL
),LevelHire AS
(
        SELECT EmpId, ManagerId,Level,Value
        FROM EmployeeTable
        WHERE EmpId = 2
        UNION ALL
        SELECT RC.EmpId,  RC.ManagerId, Lh.Level,LH.Value
        FROM LevelHire LH
        INNER JOIN [EmployeeTable] RC
        ON LH.EmpId= RC.ManagerId
)
SELECT  E.EmpId, E.ManagerId,E.Level,ISNULL(E.Value ,LH.Value) Value
FROM EmployeeTable E
    LEFT JOIN LevelHire LH
    ON E.EmpId = LH.EmpId


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. टी-एसक्यूएल:दो तालिकाओं की तुलना करना - रिकॉर्ड जो दूसरी तालिका में मौजूद नहीं हैं

  2. SQL सर्वर (T-SQL) में 'दिनांक' को 'डेटाटाइम' में बदलने के उदाहरण

  3. SQL सर्वर डेटटाइम कॉलम को डेटटाइम ऑफसेट पर माइग्रेट करें

  4. क्या ट्रिगर के लिए डेटा को संशोधित करने वाली संग्रहीत प्रक्रिया का नाम ढूंढना संभव है?

  5. एकाधिक अनुक्रमणिका बनाम बहु-स्तंभ अनुक्रमणिका