[英]How to limit rows to where SUM of a column equals to certain value and go to next row Oracle
[英]How to limit rows to where SUM of a column equals to certain value in Oracle
根据我引用的链接,我尝试执行相同的操作,但出现错误
首先,这是学习计划表 :
如果我想获得的行直到CREDIT列的SUM等于18:
如果我要获取行,直到CREDIT列的SUM等于20:
这是我尝试的SQL语句:
SELECT t.matricsno,t.sem,t.credit,
(SELECT SUM(credit) FROM studyplan
WHERE matricsno = 'D031310087')
FROM studyplan t
HAVING SUM(credit) = 18
ORDER BY t.sem,t.subjectcode;
我得到的错误是: ORA-00937:不是单组分组功能
感谢您的回复和帮助。
这是使用累积总和的好用例。
假设查询暗示,假定行的顺序由sem
和subjectcode
列明确定义,则可以这样编写查询:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.