GetAncestor(데이터베이스 엔진)
적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance
이 항목의 n번째 상위를 나타내는 hierarchyid를 반환합니다.
Syntax
-- Transact-SQL syntax
child.GetAncestor ( n )
-- CLR syntax
SqlHierarchyId GetAncestor ( int n )
참고 항목
SQL Server 2014(12.x) 및 이전 버전에 대한 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조 하세요.
인수
n
계층 구조에서 올라갈 수준 수를 나타내는 int입니다.
반환 형식
SQL Server 반환 형식: hierarchyid
CLR 반환 형식:SqlHierarchyId
설명
출력의 각 노드에 지정된 수준의 상위 노드로 현재 노드가 있는지 여부를 테스트하는 데 사용됩니다.
GetLevel()보다 큰 숫자가 전달되면 NULL이 반환됩니다.
음수가 전달되면 예외가 발생합니다.
예제
A. 부모의 자식 노드 찾기
GetAncestor(1)
는 직할 상위 항목(부모)으로 있는 david0
직원을 반환합니다. 다음 예에서는 GetAncestor(1)
를 사용합니다.
DECLARE @CurrentEmployee hierarchyid
SELECT @CurrentEmployee = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\david0'
SELECT OrgNode.ToString() AS Text_OrgNode, *
FROM HumanResources.EmployeeDemo
WHERE OrgNode.GetAncestor(1) = @CurrentEmployee ;
B. 부모의 손자 반환
GetAncestor(2)
는 계층에서 현재 노드보다 두 수준 낮은 직원을 반환합니다. 이러한 직원은 현재 노드의 손자입니다. 다음 예에서는 GetAncestor(2)
를 사용합니다.
DECLARE @CurrentEmployee hierarchyid
SELECT @CurrentEmployee = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\ken0'
SELECT OrgNode.ToString() AS Text_OrgNode, *
FROM HumanResources.EmployeeDemo
WHERE OrgNode.GetAncestor(2) = @CurrentEmployee ;
C. 현재 행 반환
를 사용하여 GetAncestor(0)
현재 노드를 반환하려면 다음 코드를 실행합니다.
DECLARE @CurrentEmployee hierarchyid
SELECT @CurrentEmployee = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\david0'
SELECT OrgNode.ToString() AS Text_OrgNode, *
FROM HumanResources.EmployeeDemo
WHERE OrgNode.GetAncestor(0) = @CurrentEmployee ;
D. 테이블이 없는 경우 계층 수준 반환
GetAncestor
는 테이블이 없는 경우에도 계층 구조에서 선택한 수준을 반환합니다. 예를 들어 다음 코드는 현재 직원을 지정하고 테이블을 참조하지 않고 현재 직원의 상위 직원을 반환 hierarchyid
합니다.
DECLARE @CurrentEmployee hierarchyid ;
DECLARE @TargetEmployee hierarchyid ;
SELECT @CurrentEmployee = '/2/3/1.2/5/3/' ;
SELECT @TargetEmployee = @CurrentEmployee.GetAncestor(2) ;
SELECT @TargetEmployee.ToString(), @TargetEmployee ;
E. 공용 언어 런타임 메서드 호출
다음 코드 조각은 메서드를 호출합니다 GetAncestor()
.
this.GetAncestor(1)
참고 항목
IsDescendantOf(데이터베이스 엔진)
hierarchyid 데이터 형식 메서드 참조
계층적 데이터(SQL Server)
hierarchyid(Transact-SQL)
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기