sql >> Database teknologi >  >> RDS >> Oracle

Oracle SQL hierarkisk forespørgsel:Udjævn hierarki og udfør aggregering

Podiluskas forslag er godt. Hvis du har Oracle 11g R2, er almindelige tabeludtryk vejen at gå. Den rekursive karakter af den nye syntaks vil tillade dig at droppe sys_connect_by_path kombineret med instr , hvilket kommer til at skade din præstation alvorligt.

Prøv dette:

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;

Her er sqlfiddle:http://sqlfiddle.com/#!4/9840f/6



  1. Skift tabel ved hjælp af sub select

  2. Hvad betyder select count(1) fra table_name på alle databasetabeller?

  3. Mysql-fejl:#1247 - Reference 'karma' understøttes ikke (reference til gruppefunktion)

  4. php + mysql indsættelsesfejl