我试图从层次结构表中找到具有父节点id和子节点id的最低级别的子节点,如下所示。它还返回中级子节点。请帮助修改此查询并获得所需结果。
请建议将相同的查询转换为 Impala ,当我运行这个查询在色调它是显示错误-表格参考找不到。
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 |
+-------------+--------------+-------------+
1条答案
按热度按时间57hvy0tb1#
标准
connect by
带筛选叶的查询提供预期输出:dbfiddle演示
不幸的是,我不知道 Impala 的解决办法:(