Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Ingin mendapatkan daftar semua dokter junior yang bekerja di bawah dokter senior dan sebaliknya?

Sesuatu seperti ini mungkin membantu:

Pertama beberapa data uji:

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)

Kuerinya seperti ini:

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

Untuk mendapatkan output yang diinginkan, Anda tidak perlu menggunakan seniorDoctorId karena mereka sudah memiliki hubungan orang tua anak.

Lihat contoh di sini



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa perbedaan dalam dua kueri ini karena mendapatkan dua set hasil yang berbeda?

  2. Sekali lagi:Prosedur Tersimpan vs. TV-UDF

  3. SQL Server - Terjadi kesalahan saat menjalankan batch. Pesan kesalahannya adalah:Nama direktori tidak valid

  4. Mengapa saya mendapatkan Procedure mengharapkan parameter '@statement' dari tipe 'ntext/nchar/nvarchar'. ketika saya mencoba menggunakan sp_executesql?

  5. Menghitung jumlah bulan penuh antara dua tanggal dalam SQL