我需要编写一个递归函数来获取table B
的引用,并在table A
的字段中合并。
表A:
ID Name Reference
1 Item A
2 Item B
3 Item C
表B:
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
答案 0 :(得分:1)
我在这里看不到任何递归:
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