次のテーブル @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
助けてください