I need to get the list of employees down to the minimum level working under a specific supervisor or head or manager.
Below is the hierarchy of employees, each employee has a supervisor, who reports to a head and who reports to a manager as below:
The data in the table has only 2 fields as follows:
My SQL Query would be SELECT Employee_ID FROM DATABASE_TABLE WHERE Supervisor_ID='Joe'
. The result would be that I get the list of all employees reporting to Joe
to the minimum level. Similarly, if I query for Supervisor_ID='David'
, I should get all employees reporting to David
to the minimum level.
I had experience in Oracle in this type of query by using CONNECT_BY_PATH
, but I have no idea on how to achieve this in MS SQL. An example would be highly appreciable. Thanks.
Create Table and Insert Statements:
CREATE TABLE DATABASE_TABLE(Employee_ID varchar(255),Supervisor_ID varchar(255));
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Alice','Dave');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Olive','Dave');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Barton','Dave');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Almira','Jacob');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Charles','Jacob');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Davis','Jacob');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Robert','Risha');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Peter','Risha');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Ethel','Risha');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Isaac','Jospeh');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Sophia','Jospeh');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Rosa','Jospeh');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Joshua','Dandy');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Silas','Dandy');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Fred','Dandy');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Frank','Andrew');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Howard','Andrew');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Ralph','Andrew');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Dennis','Henry');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Alex','Henry');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Floyd','Henry');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Carlos','Nelson');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Homer','Nelson');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Harold','Nelson');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Leo','Simon');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Warren','Simon');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Clifford','Simon');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Martha','Casper');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Hazel','Casper');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Irene','Casper');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Dave','Betsy');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Jacob','Betsy');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Risha','David');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Jospeh','David');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Dandy','Phillip');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Andrew','Phillip');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Henry','Harvey');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Nelson','Harvey');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Simon','Paul');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Casper','Paul');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Betsy','Joe');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('David','Joe');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Phillip','Joe');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Harvey','Joe');
INSERT INTO DATABASE_TABLE(Employee_ID, Supervisor_ID) VALUES ('Paul','Joe');