반응형
Ant_U
DBA 개미
Ant_U
전체 방문자
오늘
어제
  • 분류 전체보기 (262)
    • AWS (3)
    • C# (1)
    • SQL (236)
      • MYSQL (186)
      • MSSQL (50)
    • 자격증 (20)
      • SQLD (12)
      • SQLP (8)

인기 글

최근 글

250x250
hELLO · Designed By 정상우.
Ant_U

DBA 개미

[MSSQL] GetRoot 사용 방법 및 예시
SQL/MSSQL

[MSSQL] GetRoot 사용 방법 및 예시

2024. 4. 22. 11:11
728x90
반응형

MSSQL에서 GetRoot 함수는 계층 구조 데이터에서 특정 노드의 최상위 부모(루트)를 찾는 데 사용됩니다. 이 함수는 주어진 노드의 상위 부모를 재귀적으로 탐색하여 최상위 부모를 반환합니다.

일반적으로 GetRoot 함수는 계층 구조적인 데이터를 처리하거나 쿼리할 때 사용됩니다. 특히 부모-자식 관계를 가진 테이블이나 CTE(공통 테이블 표현식)를 사용하여 구성된 데이터에서 사용됩니다.

간단한 예시로 조직도를 가정해보겠습니다. 다음은 조직도를 나타내는 Employees 테이블이라고 가정합니다.

EmployeeID | EmployeeName | ManagerID
--------------------------------------
1          | John         | NULL
2          | Alice        | 1
3          | Bob          | 1
4          | Carol        | 2
5          | David        | 3



위의 테이블은 EmployeeID로 식별되는 직원과 ManagerID로 식별되는 관리자 간의 계층적 관계를 보여줍니다. John은 최상위 관리자이며 다른 직원들은 그 밑에 있습니다.

이제 GetRoot 함수를 사용하여 각 직원의 최상위 부모를 찾는 쿼리를 작성해보겠습니다.

WITH EmployeeHierarchy AS (
    SELECT EmployeeID, EmployeeName, ManagerID
    FROM Employees
    WHERE ManagerID IS NULL -- 최상위 노드(부모가 없는 노드)

    UNION ALL

    SELECT e.EmployeeID, e.EmployeeName, e.ManagerID
    FROM Employees e
    INNER JOIN EmployeeHierarchy eh ON e.EmployeeID = eh.ManagerID
)

SELECT EmployeeID, EmployeeName, ManagerID,
       (SELECT GetRoot(ManagerID)) AS RootManagerID
FROM EmployeeHierarchy;



위의 쿼리에서는 CTE를 사용하여 계층적 구조를 정의하고, GetRoot 함수를 통해 각 직원의 최상위 부모(루트)를 찾습니다. 결과는 각 직원의 ID, 이름, 상위 관리자 ID 및 최상위 부모(루트)의 ID로 나타내어집니다.

GetRoot 함수는 계층적 데이터에서 각 노드의 최상위 부모를 찾을 때 유용하며, 데이터를 구조화하고 분석하는 데 도움이 됩니다.

728x90
반응형

'SQL > MSSQL' 카테고리의 다른 글

[MSSQL] GetReparentedValue 사용 방법 및 예시  (0) 2024.04.23
[MSSQL] IsDescendantOf 사용 방법 및 예시  (0) 2024.04.23
[MSSQL] GetLevel 사용 방법 및 예시  (0) 2024.04.22
[MSSQL] GetDescendant 사용 방법 및 예시  (0) 2024.04.09
[MSSQL] GetAncestor 사용 방법 및 예시  (0) 2024.04.09
[MSSQL] hierarchyid 메서드 사용 방법 및 예시  (0) 2024.04.09
[MSSQL] smalldatetime 사용 방법 및 예시  (0) 2024.04.09
[MSSQL] datetimeoffset 사용 방법 및 예시  (0) 2024.04.09
    'SQL/MSSQL' 카테고리의 다른 글
    • [MSSQL] GetReparentedValue 사용 방법 및 예시
    • [MSSQL] IsDescendantOf 사용 방법 및 예시
    • [MSSQL] GetLevel 사용 방법 및 예시
    • [MSSQL] GetDescendant 사용 방법 및 예시
    Ant_U
    Ant_U

    티스토리툴바