【发布时间】:2019-01-31 15:35:05
【问题描述】:
我正在尝试从具有 parent_node_id 和 child_node_id 的层次结构表中找到最低级别的子节点,如下所示。 它也返回中级子节点。请帮助修改此查询并获得所需的结果。
请建议将相同的查询转换为 Impala,当我在 HUE 中运行此查询时,它显示错误 - 未找到 tableR 参考。
WITH tableR (parent_node_id, child_node_id)
AS (SELECT e.parent_node_id, e.child_node_id
FROM hierarchy e
WHERE parent_node_id IN (select parent_node_id from hierarchy)
UNION ALL
SELECT e.parent_node_id, e.child_node_id
FROM hierarchy e
INNER JOIN tableR d
ON e.parent_node_id = d.child_node_id
)
SELECT parent_node_id, child_node_id
FROM tableR
源表:
+-------------+--------------+-------------+
|child_node_id|parent_node_id| child_desc |
+-------------+--------------+-------------+
| C1 | P1 | Private |
+-------------+--------------+-------------+
| C2 | P2 | Public |
+-------------+--------------+-------------+
| C11 | C1 | Party |
+-------------+--------------+-------------+
| C12 | C11 | Equity |
+-------------+--------------+-------------+
| 123 | C12 | Placement |
+-------------+--------------+-------------+
预期输出:
+-------------+--------------+-------------+
|parent_node |lowest_l_child| child_desc |
+-------------+--------------+-------------+
| P1 | 123 | Placement |
+-------------+--------------+-------------+
| P2 | C2 | Public |
+-------------+--------------+-------------+
| C1 | 123 | Placement |
+-------------+--------------+-------------+
| C11 | 123 | Placement |
+-------------+--------------+-------------+
| C12 | 123 | Placement |
+-------------+--------------+-------------+
【问题讨论】: