Sql 如何从oracle获得最高的父级金额

Sql 如何从oracle获得最高的父级金额,sql,oracle,Sql,Oracle,我有两个表customer和hierarchy,如下所示: Customer Table Hierarchy Table Pty Amount SID Parent Child 100 10 01 1 2 200 20 02

我有两个表customer和hierarchy,如下所示:

    Customer Table                             Hierarchy Table

    Pty Amount SID                             Parent    Child          
    100  10    01                                1         2
    200  20    02                                2         3
    100  20    03                                3         100
                                                 1         200
我想获取总的父级交易金额,但父级没有任何 客户表中的数据。如何只使用层次结构查询来映射这两个表,并将所有子表的值都映射到父表

我目前的问题如下,但不符合我的目的

  Select Sum(c.amount),c.pty from customer c
    right outer join hierarchy h on c.pty=h.child    
    where h.parent in (select (m.child) as parent from hierarchy m
     Connect By Prior child=parent
     start with m.child=1
     )  group by c.pty

Result is as follows:    
Amount    Pty
30         2
null       1

But When I pass 1 as parameter I should get
Amount       Pty
50            1

When 2 is passed to the query, the result should be
Amount Pty
30      2
非常感谢您的帮助

select root, sum(nvl(amount, 0)) s from (
  select level, h.child, h.parent, c.amount, connect_by_root h.parent root
  from customer c right join hierarchy h on c.pty = h.child    
  --start with h.parent = 1
  connect by prior child = parent
) group by root;
如果要查找某个父级的sum,只需取消注释,从开始

按根连接\u是一个一元运算符,显示层次结构的根值

此查询从层次结构表中的每一行开始,并查找所有子项


connect\u by\u root有助于识别根父节点

解释输出规则。感谢您的回复。此查询工作正常,并向我提供了全部金额详细信息。:)但是如何在不使用“开始日期”的情况下仅使用所选项目的记录筛选列表?示例:一次仅显示父级1或父级2的金额。@psobhan…),其中逐根根根在(1,2)组中;