Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment limiter les lignes à l'endroit où SUM d'une colonne est égale à une certaine valeur dans Oracle

C'est un bon cas d'utilisation pour utiliser une somme cumulée.

En supposant que l'ordre des lignes est défini sans ambiguïté par les colonnes sem et subjectcode , comme votre requête l'implique, vous pouvez écrire la requête comme ceci :

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