我有一个表存储客户的层次结构,即祖父母、父母和孩子,如下
CustomerNum Amount GrantParent Parent
----------- ------ ----------- ------
8046026507 100 NULL 1872539355
8099032159 100 1872539355 8046026507
1872539355 100 NULL NULL
当我根据层次结构传递客户时,我需要一个 SQL 查询来获取 AMOUNT 的总和。 例如,当我传递客户“1872539355”(祖父母)时,我应该得到该客户的“300”(所有父母、孩子的总和)。当我通过“8046026507”(家长)时,我应该得到“200”。当我通过 8099032159(儿童)时,我应该得到“100”。一位祖父母可以有多个父母,一位父母可以有多个孩子。
非常感谢。
假设您有一个树形数据结构(没有循环或分支合并),然后使用分层查询:
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 |