Função de agregação Oracle para alocar quantidade

Suponha que eu tenha 2 tabelasT1 eT2 do seguinte modo

T1:

bag_id bag_type capacity
------|--------|--------
  1       A       500
  2       A       300
  3       A       100
  4       B       200
  5       B       100

T2:

item_type item_amount
---------|-----------
   A         850
   B         300

Cada registro na tabelaT1 representa uma sacola e sua capacidade, aqui tenho 5 sacolas. Eu quero escrever um SQL que aloque itens na tabelaT2 em cada bolsa do mesmo tipo, ou seja, o resultado deve ser assim

bag_id bag_type capacity allocated_amount
------|--------|--------|----------------
  1       A        500        500
  2       A        300        300
  3       A        100        50
  4       B        200        200
  5       B        100        100

Portanto,Estou encontrando algum tipo de função de agregação, vamos chamá-loallocate(), que pode produzir a colunaallocated_amount como acima. Eu acho que, se existir, pode ser usado assim

select 
    t1.bag_id,
    t1.bag_type, 
    t1.capacity,
    allocate(t2.item_amount, t1.capacity) 
        over (partition by t1.bag_type order by t1.capacity desc) as allocatd_amount
from t1, t2
where t2.item_type = t1.bag_type

Minha solução atual é usar uma tabela temporária e um loop PL / SQL para o cálculo, mas espero poder fazê-lo com um simples SQL.

questionAnswers(3)

yourAnswerToTheQuestion