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

Come limitare le righe a dove SUM di una colonna è uguale a un determinato valore in Oracle

Questo è un buon caso d'uso per l'utilizzo di una somma cumulativa.

Supponendo che l'ordine delle righe sia definito in modo inequivocabile dalle colonne sem e subjectcode , come implica la tua query, puoi scrivere la query in questo modo:

select *
  from (select t.*,
               sum(t.credit) over (order by t.sem, t.subjectcode) as credit_sum
          from studyplan t
         where t.matricsno = 'D031310087')
 where credit_sum <= 20 -- adjust to desired number of credits
 order by sem, subjectcode