Пример данных
DECLARE @Temp AS TABLE (ObjectId INT,ObjectType VARCHAR(2),ParentObjectId INT)
INSERT INTO @Temp
SELECT 1,'A',NUll UNION ALL
SELECT 2,'B',1 UNION ALL
SELECT 3,'C',NULL UNION ALL
SELECT 4,'D',3 UNION ALL
SELECT 5,'E',4 UNION ALL
SELECT 6,'B',3
Серверный скрипт Sql
;WITH CTE
AS
(
SELECT ObjectId,
ObjectType,
ParentObjectId,
CAST('\'+ CAST(ObjectId AS VARCHAR(MAX))AS VARCHAR(MAX)) AS [ObjectIdHierarchy] ,
CAST('\'+ ObjectType AS VARCHAR(MAX)) AS [Hierarchy]
FROM @Temp
WHERE ParentObjectId IS NULL
UNION ALL
SELECT t.ObjectId,
t.ObjectType,
t.ParentObjectId,
[ObjectIdHierarchy]+'\'+ CAST(t.ObjectId AS VARCHAR(MAX)) AS [ObjectIdHierarchy],
[Hierarchy]+'\'+ t.ObjectType AS [Hierarchy]
FROM CTE c
INNER JOIN @Temp t
ON t.ParentObjectId = c.ObjectId
)
SELECT ObjectId,
ObjectType,
LEFT(RIGHT([ObjectIdHierarchy],LEN([ObjectIdHierarchy])-1),1) AS ParentObjectId,
LEFT(RIGHT([Hierarchy],LEN([Hierarchy])-1),1) AS ParentChildHierarchy
FROM CTE
WHERE ObjectId =1
Результат
ObjectId ObjectType ParentObjectId ParentChildHierarchy
------------------------------------------------------------
1 A 1 A