我有一张类似图片的图表,将其存储在KID , ParentID
的表格中。
如何为所有在父母之下的孩子获得最大MR。
示例:对于节点C ----> max(MR(D),MR(E),MR(F))
如何为节点的所有子节点找到Max(MR)?
答案 0 :(得分:1)
DECLARE @a TABLE
(
KID INT PRIMARY KEY,
ParentID INT,
MR INT
)
INSERT INTO @a (KID, ParentID, MR)
VALUES
(1, 0, 3), (2, 1, 1), (3, 1, 3),
(4, 3, 3), (5, 3, 5), (6, 5, 3)
;WITH cte AS
(
SELECT *
FROM @a
WHERE ParentID = 3
UNION ALL
SELECT t2.*
FROM cte t1
JOIN @a t2 ON t1.ParentID = t2.KID
)
SELECT MAX(MR)
FROM cte
OPTION (MAXRECURSION 0)
结果 -
5
答案 1 :(得分:1)
也许你可以使用over子句
SELECT
ParentID,
MAX(MR) OVER(PARTITION BY ParentID)
FROM
Table