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

वरिष्ठ चिकित्सक और इसके विपरीत काम करने वाले सभी जूनियर डॉक्टरों की सूची प्राप्त करना चाहते हैं?

ऐसा कुछ मदद कर सकता है:

पहले कुछ परीक्षण डेटा:

DECLARE @DoctorInfo TABLE
                (
                    doctorId INT,
                    fistName VARCHAR(100),
                    seniorDoctorId INT
                )

INSERT INTO @DoctorInfo
VALUES
    (34,'ABC',0),
    (35,'XYZ',34),
    (36,'bsd',34),
    (37,'dfdf',35),
    (38,'dffdg',0)

इस तरह की क्वेरी:

DECLARE @doctorId INT
SET @doctorId=35
;WITH CTE(doctorId,seniorDoctorId,fistName)
AS
(
    SELECT
        DoctorInfo.doctorId,
        DoctorInfo.seniorDoctorId,
        DoctorInfo.fistName
    FROM
        @DoctorInfo AS DoctorInfo
    WHERE
        [email protected]
    UNION ALL
    SELECT
        DoctorInfo.doctorId,
        DoctorInfo.seniorDoctorId,
        DoctorInfo.fistName
    FROM
        @DoctorInfo AS DoctorInfo
        JOIN CTE
            ON DoctorInfo.seniorDoctorId=CTE.doctorId
)
SELECT
    *
FROM
    CTE

वांछित आउटपुट प्राप्त करने के लिए आपको seniorDoctorId का उपयोग करने की आवश्यकता नहीं है क्योंकि उनका पहले से ही माता-पिता के बच्चे का रिश्ता है।

उदाहरण देखें यहां



  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 सर्वर में EXISTS लॉजिकल ऑपरेटर का उपयोग कैसे करें - SQL सर्वर / TSQL ट्यूटोरियल पार्ट 125

  2. तालिका-मूल्यवान फ़ंक्शन को कॉल करते समय एक क्वेरी संकेत जोड़ना

  3. एसक्यूएल:उपयोगकर्ता तालिका में उपयोगकर्ता रिकॉर्ड के लिए कई तालिकाओं से गिनती प्राप्त करना। सबसे अच्छा तरीका क्या है?

  4. SQL किसी भी क्रम में कीवर्ड की तरह चुनें

  5. बाइनरी प्रारूप में SQL डीबी में संग्रहीत फ़ाइल को कैसे डाउनलोड करें