sql >> Database >  >> RDS >> Oracle

Oracle SQL hiërarchische query:hiërarchie afvlakken en aggregatie uitvoeren

De suggestie van Podiluska is goed. Als u Oracle 11g R2 hebt, zijn algemene tabeluitdrukkingen de juiste keuze. Door de recursieve aard van de nieuwe syntaxis kun je het sys_connect_by_path weggooien gecombineerd met instr , wat uw prestaties ernstig zal schaden.

Probeer dit:

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;

Hier is de sqlfiddle:http://sqlfiddle.com/#!4/9840f/6



  1. Geen gegevens gevonden of er is een te veel uitzonderingsfout opgetreden tijdens het invoegen van bulkrecords

  2. Postgres-trigger om Java-cache bij te werken

  3. Verschil tussen deze twee benaderingen van samenvoegingstafels?

  4. Sequelize leest datetime alleen in UTC