我有下表@t:
ParentId SkuName ChildId
P1 X1 C1
C1 X2 C2
C2 X3 C2
如果我通过 ParentId = P1,则所需的输出是 x3
即停止条件是匹配记录的最后一行并获取该记录的 sku 名称
排。如果没有匹配的行,则返回 null
我的尝试(虽然没有工作)
DECLARE @t TABLE (ParentId Varchar(100), Name VARCHAR(20), ChildId Varchar(100))
INSERT INTO @t(ParentId, Name, ChildId)
SELECT 'P1', 'X1', 'C1' UNION ALL
SELECT 'C1', 'X2', 'C2' UNION ALL
SELECT 'C2', 'X3', 'C2'
Declare @ParentId Varchar(10) = 'P1'
;With CTE As
(
Select
Rn = ROW_NUMBER() Over(Order By (Select 1))
,ParentId
, Name
, ChildId
From @t Where ParentId = @ParentId
Union All
Select
Rn + 1
,pc.ParentId as Parents
,pc.Name
,pc.ChildId
FROM @t pc
JOIN CTE gp on pc.Childid = gp.Parentid
)
Select *
From CTE
请帮忙