Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Funkcja agregacji Oracle do alokacji kwoty

Szukasz sumy skumulowanej. Coś takiego:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę pobrać następne zdarzenie, gdy przesunięcie jest zmienne?

  2. Wprowadzenie do obsługi wyjątków PL/SQL w bazie danych Oracle

  3. Jak rozwiązać ORA-29913 za pomocą tabel zewnętrznych

  4. Zwróć tabelę w funkcji PL/SQL

  5. ORA-28040 Nie Pasujący protokół uwierzytelniania podczas łączenia z SQL PLUS do Oracle 12c DB przy użyciu klienta sql plus w wersji 11.1