[英]How to Multiple node weight with its value then compute sum of all child nodes in parent child hierarchy using sql server 2008
[英]Using SQL is there a way to compare if a node is in the parent hierarchy of any of a set of nodes?
我需要搜索我的层次结构以返回高于或等于子查询中返回的任何节点的所有节点。
给定表:H
Child | Parent
A1 | A
A2 | A
A1b | A1
A2a | A2
A2b | A2
B1 | B
B3 | B
B1c | B1
B3a | B3
子查询返回:
A2a
A2b
B3
我需要一个使用子查询结果返回的查询。
A
A2
A2a
A2b
B
B3
我一直在尝试使用this SO question中的查询来解决它,但到目前为止还没有运气。
您可以将现有查询放在 CTE 中,然后设置分层查询,如:
WITH q(id) AS ( ... )
SELECT id FROM q
UNION ALL
SELECT DISTINCT Parent
FROM mytable
CONNECT BY PRIOR Parent = Child
START WITH Child in (SELECT id FROM q)
ORDER BY id
使用您的示例数据在 DB Fiddle 上进行演示:
WITH q(id) AS (
SELECT 'A2a' FROM DUAL
UNION ALL SELECT 'A2b' FROM DUAL
UNION ALL SELECT 'B3' FROM DUAL
)
SELECT id FROM q
UNION ALL
SELECT DISTINCT Parent
FROM mytable
CONNECT BY PRIOR Parent = Child
START WITH Child in (SELECT id FROM q)
ORDER BY id
| ID | | :-- | | A | | A2 | | A2a | | A2b | | B | | B3 |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.