繁体   English   中英

如何将行限制为列的SUM等于Oracle中的某些值

[英]How to limit rows to where SUM of a column equals to certain value in Oracle

根据我引用的链接,我尝试执行相同的操作,但出现错误

将行限制为MySQL中某一列的总和等于某个值的位置

首先,这是学习计划表

在此处输入图片说明

如果我想获得的行直到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:不是单组分组功能

感谢您的回复和帮助。

这是使用累积总和的好用例。

假设查询暗示,假定行的顺序由semsubjectcode列明确定义,则可以这样编写查询:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM