Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como limitar linhas para onde SUM de uma coluna é igual a determinado valor no Oracle


Este é um bom caso de uso para usar uma soma cumulativa.

Assumindo que a ordem das linhas é definida inequivocamente pelas colunas sem e subjectcode , como sua consulta implica, você pode escrever a consulta assim:
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