sql >> Database >  >> RDS >> Oracle

Oracle-aggregatiefunctie om bedrag toe te wijzen

U zoekt een cumulatief bedrag. Zoiets als dit:

select t1.*,
       (case when cumecap <= t2.item_amount 
             then t1.capacity
             when cumecap - t1.capacity <= t2.item_amount
             then t2.item_amount - (cumecap - t1.capacity)
             else 0
        end) as allocated_capacity
from (select t1.*,
             sum(t1.capacity) over (partition by bag_type order by bag_id) as cumecap
      from t1
     ) t1 join
     t2
     on t1.bag_type = t2.item_type;


  1. FOUT 1064 (42000) in MySQL

  2. Een SQL-query in een PHP-functie plaatsen

  3. Converteer NULL-waarden naar de standaardwaarde van de kolom bij het invoegen van gegevens in SQLite

  4. Wat betekenen de \x1a-tekens