SQL Server: как получить все дочерние записи с указанным родительским идентификатором в самоссылающейся таблице

Привет у меня есть таблица, которая ссылается на себя, и я должен иметь возможность выбрать родителя и все это »s дочерние записи из данного родительского идентификатора.

Моя таблица выглядит следующим образом:

ID   | ParentID | Name         
-----------------------              
1      NULL       A
2      1          B-1
3      1          B-2
4      2          C-1
5      2          C-2

Так что для приведенного выше примера яЯ хотел бы иметь возможность передать значение 1 и получить все записи выше.

Пока что ямы придумали следующую рекурсивную табличную функцию, но она 'ведет себя не так, как ожидалось (возвращает только первую запись).

CREATE FUNCTION [dbo].[SelectBranches]
(   
    @id INT
    ,@parentId INT
)
RETURNS @branchTable TABLE
(
    ID INT
    ,ParentID INT
    ,Name INT
)
AS
BEGIN 

    IF @branchId IS NOT NULL BEGIN

        INSERT INTO @branchTable
        SELECT 
            ID
            ,ParentID
            ,Name
        FROM
            tblLinkAdvertiserCity
        WHERE
            ID = @id

    END

    INSERT INTO @branchTable
    SELECT
        br.ID
        ,br.ParentID
        ,br.Name
    FROM
        @branchTable b
    CROSS APPLY
        dbo.SelectBranches(NULL, b.ParentID) br

    RETURN
END
GO

Ответы на вопрос(3)

Ваш ответ на вопрос