具有多个父级别的 Oracle 分层查询:如何获取所需的详细信息

问题描述 投票:0回答:1

我有一个表存储客户的层次结构,即祖父母、父母和孩子,如下

CustomerNum     Amount  GrantParent   Parent           
-----------     ------  -----------   ------ 
8046026507      100     NULL          1872539355
8099032159      100     1872539355    8046026507
1872539355      100     NULL          NULL

当我根据层次结构传递客户时,我需要一个 SQL 查询来获取 AMOUNT 的总和。 例如,当我传递客户“1872539355”(祖父母)时,我应该得到该客户的“300”(所有父母、孩子的总和)。当我通过“8046026507”(家长)时,我应该得到“200”。当我通过 8099032159(儿童)时,我应该得到“100”。一位祖父母可以有多个父母,一位父母可以有多个孩子。

非常感谢。

oracle plsql
1个回答
0
投票

假设您有一个树形数据结构(没有循环或分支合并),然后使用分层查询:

SELECT SUM(amount)
FROM   table_name
START WITH CustomerNum = 1872539355
CONNECT BY PRIOR CustomerNum = Parent

对于样本数据:

CREATE TABLE table_name (CustomerNum, Amount, GrantParent, Parent) AS
SELECT 8046026507, 100, NULL,       1872539355 FROM DUAL UNION ALL
SELECT 8099032159, 100, 1872539355, 8046026507 FROM DUAL UNION ALL
SELECT 1872539355, 100, NULL,       NULL       FROM DUAL;

输出:

总和(金额)
300

如果您

START WITH CustomerNum = 8046026507
那么输出是:

总和(金额)
200

如果你

START WITH CustomerNum = 8099032159
那么输出是:

总和(金额)
100

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.