sql >> Databasteknik >  >> RDS >> Oracle

Oracle SQL Hierarchical Query:Platta ut hierarki och utför aggregation

Podiluskas förslag är bra. Om du har Oracle 11g R2 är vanliga tabelluttryck rätt väg att gå. Den nya syntaxens rekursiva karaktär gör att du kan ta bort sys_connect_by_path kombinerat med instr , vilket kommer att skada din prestation allvarligt.

Prova detta:

select
  child,
  sum(total_quantity) total_quantity
from (
  with h (parent, child, isleaf, quantity, total_quantity) as (
    select 
      parent,
      child,
      isleaf,
      quantity,
      quantity total_quantity
    from
      itemhier
    where
      parent = 'ASSY001' 
    union all
    select
      ih.parent,
      ih.child,
      ih.isleaf,
      ih.quantity,
      ih.quantity * h.total_quantity total_quantity
    from
      itemhier ih
    join 
      h on h.child = ih.parent
  )
  select * from h
  where isleaf = 1
)
group by child;

Här är sqlfiddle:http://sqlfiddle.com/#!4/9840f/6



  1. Error:(124, 9) error:metoden åsidosätter eller implementerar inte en metod från en supertyp

  2. SQL Server Error - HRESULT E_FAIL har returnerats från ett anrop till en COM-komponent

  3. Hur kan jag lösa inkompatibla med sql_mode=only_full_group_by i laravel vältalig?

  4. Klistra in SQL i MySQL-kommandoraden