我有一个表格,其中有两列,如下所示。
value1 DerivedFrom
1 0
2 1
3 2
4 3
5 4基本上,它说的是1是新的,2是从1派生的,3是从2派生的,依此类推。
我希望输出1为主密钥,2,3,4和5为子密钥。
value1 DerivedFrom
1 0
1 1
1 2
1 3
1 4它可以在SQL中实现吗?提前感谢
发布于 2020-06-11 01:22:13
正如评论中提到的,最简单的方法是使用rCTE (递归公用表表达式):
--Sample Data
WITH YourTable AS(
SELECT *
FROM (VALUES(1,0),
(2,1),
(3,2),
(4,3),
(5,4))V(value1,DerivedFrom)),
--Solution
rCTE AS(
SELECT YT.value1 as rootValue,
YT.value1,
YT.DerivedFrom
FROM YourTable YT
WHERE YT.DerivedFrom = 0
UNION ALL
SELECT r.rootValue,
YT.value1,
YT.DerivedFrom
FROM YourTable YT
JOIN rCTE r ON YT.DerivedFrom = r.value1)
SELECT r.rootValue AS value1,
r.DerivedFrom
FROM rCTE r;https://stackoverflow.com/questions/62309145
复制相似问题