MS SQL 的递归函数

Recursive Function for MS SQL

我需要编写一个递归函数来从 table B 中获取引用并合并到 table A 中的一个字段中。

Table答:

ID   Name      Reference
1    Item A 
2    Item B 
3    Item C 

Table乙:

ID   Parent_ID   Reference
1    1           ABC
2    1           DEF
3    2           GHI

预期结果:

ID   Name      Reference
1    Item A     ABCDEF
2    Item B     GHI
3    Item C 

我在这里没有看到任何递归:

DECLARE @a TABLE
    (
      ID INT ,
      Name VARCHAR(10) ,
      Reference VARCHAR(100)
    )
DECLARE @b TABLE
    (
      ID INT ,
      ParentID INT ,
      Reference VARCHAR(3)
    )

INSERT  INTO @a
VALUES  ( 1, 'Item A', NULL ),
        ( 2, 'Item B', NULL ),
        ( 3, 'Item C', NULL )

INSERT  INTO @b
VALUES  ( 1, 1, 'ABC' ),
        ( 2, 1, 'DEF' ),
        ( 3, 2, 'GHI' )


UPDATE  a
SET     Reference = ca.data
FROM    @a a
        CROSS APPLY ( SELECT    
                   (            SELECT  b.Reference
                                FROM    @b b
                                WHERE   a.ID = b.ParentID
                                ORDER BY ID
                      FOR       XML PATH('') ,
                                    TYPE
                   ).value('.', 'varchar(max)') AS DATA
                    ) ca

SELECT  *
FROM    @a

输出:

ID  Name    Reference
1   Item A  ABCDEF
2   Item B  GHI
3   Item C  NULL