我想通过添加一些值来更新我的标记平均值。
我的学生表包含(NOSTUDENT,COURSECODE,SEMESTER,NOGROUPE,MARK)专栏。
我的观点:AverageByGroupe包含相应学期中该课程的学生平均分数。
CREATE OR REPLACE VIEW AverageByGroup AS
SELECT COURSCODE, NOGROUPE, SEMESTER, AVG(MARK) AS AVGMARK
FROM ADMITED_TABLE GROUP BY COURSECODE,NOGROUPE,SEMESTER;
问题:我希望将给定课程,小组,学期的平均分数更新10,但AVGMARK会注意到一个列,它是正确的UPDATE语法。
我尝试了什么:
UPDATE ADMITED_TABLE
SET AVG(MARK) = SELECT( (AVG(MARK) + 10)
FROM ADMITED_TABLE WHERE COURSCODE = 'AAAA'
AND NOGROUP = 2
AND SEMESTER = 'AUTMN');
Error:
Error de command ligne: 2 Column: 8
Rapport of error -
Erreur SQL : ORA-00927: missing equal sign
00927. 00000 - "missing equal sign"
*Cause:
*Action:
修改: 更清楚的是,这是一个变异表,所以我想要使用的是一个INSTEAD OF INSERT TRIGGER,每当通过调整该学生的标记来标记平均值时,它就会被激活。
对于选择语法错误,我包括select in(
UPDATE ADMITED_TABLE
SET AVG(MARK) = (SELECT (AVG(MARK) + 10)
FROM ADMITED_TABLE WHERE COURSCODE = 'AAAA'
AND NOGROUP = 2
AND SEMESTER = 'AUTMN');
错误:
ORA-00927: missing equal sign
00927. 00000 - "missing equal sign"
*Cause:
*Action:
答案 0 :(得分:1)
UPDATE NewADMITED_TABLE
SET AVGMARK = (AVGMARK + 10)
- 这不再是DERIVED专栏
WHERE COURSCODE = 'AAAA'
AND NOGROUP = 2
AND SEMESTER = 'AUTMN