我正在尝试识别我需要递归 cte 的数据中的递归/循环引用。
例如,我有一个包含Product_ID
and的表Inner_Product_ID
。当 Product_ID A 在 Product_ID B 内部时,我想要结果,它在 Product_ID C 内部,在 Product_ID A 内部。
样本数据
PRODUCT_ID INNER_PRODUCT_ID
12 36
24 12
36 24
1 2
3 4
预期产出
PRODUCT_ID INNER_PRODUCT_ID
12 36
24 12
36 24
我已尝试使用 cte 进行基本查询,但不确定如何针对此问题实现递归 cte:
;WITH RNCTE
AS ( SELECT *,
ROW_NUMBER() OVER (PARTITION BY pr1.PRODUCT_ID
ORDER BY pr1.PRODUCT_ID
) rn
FROM
TableName pr1),
cte
AS ( SELECT *
FROM RNCTE
WHERE RNCTE.rn = 1
UNION ALL
SELECT *
FROM cte c
JOIN RNCTE r
ON r.PRODUCT_ID = c.PRODUCT_ID
AND r.rn = c.rn + 1)
SELECT *
FROM cte;