Sql 关于如何克服ORA-00937有什么建议吗?
它总是带着错误回来,有什么建议吗Sql 关于如何克服ORA-00937有什么建议吗?,sql,ora-00937,Sql,Ora 00937,它总是带着错误回来,有什么建议吗 感谢您的合作实际上SQL中有几个问题。试试这个 select s.S_FIRST||' '||s.S_LAST, sum(c.CREDITS) from enrollment e,student s,course c where s.s_id=e.S_ID and c.COURSE_NO=e.C_SEC_ID group by s.S_ID having sum(c.credits)>12 order by s.s_id; Error report: S
感谢您的合作实际上SQL中有几个问题。试试这个
select s.S_FIRST||' '||s.S_LAST, sum(c.CREDITS) from enrollment e,student s,course c
where s.s_id=e.S_ID
and c.COURSE_NO=e.C_SEC_ID
group by s.S_ID
having sum(c.credits)>12 order by s.s_id;
Error report:
SQL Error: ORA-00979: not a GROUP BY expression
00979. 00000 - "not a GROUP BY expression"
必须按所有非聚集字段分组。此外,我不认为您可以对不在查询中的字段进行排序(因此也需要在选择列表和分组依据中)。文档中的错误是
基于你的无效数字评论,我认为你的加入是错误的课程号,或者也许学分不是一个数字或什么的 您需要将所有列都包括在选择列表中,以便分组。看这里 从文件 原因:GROUP BY子句不包含 SELECT子句。选择未包含在组中的表达式 函数,如平均值、计数、最大值、最小值、总和、STDEV或方差,必须 在GROUPBY子句中列出 操作:在GROUP BY子句中包含所有 非分组函数参数 补救措施是,将select列表中的所有列包含到您的
group by
子句中。将您的查询更改为
select s.s_id, s.S_FIRST||' '||s.S_LAST name, sum(c.CREDITS) sum_credits
from enrollment e,student s,course c
where s.s_id=e.S_ID
and c.COURSE_NO=e.C_SEC_ID
group by 1, 2
having sum(c.credits) > 12
order by s.s_id;
根据Oracle规范错误ORA-01722
表示尝试将字符串转换为数字失败,因为该字符串不是有效的数字文字。
确保所有字段都是INT类型或相同类型。是c.CREDITS
INT类型吗
s.s\u id
和e.s\u id
是否属于同一类型
c.COURSE\u NO
和e.c\u SEC\u ID
是同一类型的吗?嘿,兄弟,它返回了这个错误报告:SQL错误:ORA-01722:无效号码01722。00000-“无效号码”@user3651097,如果有帮助,别忘了接受答案。
select s.S_FIRST||' '||s.S_LAST as fullname, s.s_id,
sum(c.CREDITS) as total_credit from enrollment e,
student s,course c
where s.s_id=e.S_ID
and c.COURSE_NO=e.C_SEC_ID
group by s.S_FIRST||' '||s.S_LAST
having total_credit > 12
order by s.s_id;