제 상사는 누구인가요?
이 연습에서는 계층 구조의 최상위 보스부터 최하위 직원까지의 경로를 구하려고 합니다. 이를 위해 각 단계에서 얻은 정보를 하나의 필드로 합쳐야 해요. 숫자형 ID들을 문자열로 변환해 CAST()로 이어 붙이면 됩니다. 예를 들어 숫자형 ID를 문자형으로 바꾸려면 CAST(ID AS VARCHAR(MAX))를 사용할 수 있어요.
이제 Chris Feierabend(ID=18)와 Jasmin Mentil(ID=16) 직원의 경로를 조직의 최상위까지 찾으세요. 출력 형식은 boss_first_level -> boss_second_level ...처럼 되어야 합니다. 이름이 아니라 직원의 ID만 선택해야 합니다.
이 연습은 강의의 일부입니다
SQL Server에서의 계층형 및 재귀 쿼리
연습 안내
- 재귀의 시작 조건과 함께 상급자(
0)의ID로Path를 초기화하세요. - 앵커 멤버를
UNION하고 재귀 멤버의 필드(ID,Name,Supervisor)를 정의하세요. - 각 단계에서 상급자
Supervisor의 ID를Path에 추가하세요. - CTE에서
Chris Feierabend와Jasmin Mentil직원의 ID를 선택하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
WITH employee_Hierarchy AS (
SELECT
ID,
NAME,
Supervisor,
-- Initialize the Path with CAST
___('___' AS VARCHAR(MAX)) as Path
FROM employee
WHERE Supervisor = 0
-- UNION the anchor query
___ ALL
-- Select the recursive query fields
SELECT
emp.___,
emp.___,
emp.___,
-- Add the supervisor in each step. CAST the supervisor.
Path + '->' + ___(emp.___ AS VARCHAR(MAX))
FROM employee emp
INNER JOIN employee_Hierarchy
ON emp.Supervisor = employee_Hierarchy.ID
)
SELECT Path
FROM employee_Hierarchy
-- Select the employees Chris Feierabend and Jasmin Mentil
WHERE ___ = 16 OR ID = ___;