在SQL中使用SUM()函数的返回值

时间:2018-03-28 09:49:06

标签: sql oracle plsql

在历史表中,我想添加column3的所有值,如果它们具有相同的column2值12345.如果它的总和等于0,那么它们的column1将更改为16977.

使用此代码:

    UPDATE history
    SET column1 = 16977
    WHERE 
       (SELECT SUM(column3)FROM history WHERE column2 = 12345) = 0 
       AND column2 = 12345;

我收到以下错误:

错误报告 -

  

SQL错误:ORA-08002:此会话中尚未定义序列SEQLOG.CURRVAL   ORA-06512:at" MCM_2017.GETUSERID",第8行   ORA-06512:at" MCM_2017.GET_MVT",103行   ORA-04088:执行触发器期间出错' MCM_2017.GET_MVT'   08002. 00000 - "序列%s.CURRVAL尚未在此会话中定义"   *原因:在序列NEXTVAL之前选择了序列CURRVAL   *动作:在选择CURRVAL

之前从序列中选择NEXTVAL

我尝试使用IF语句使用其他代码:

DECLARE
total: NUMBER;

 BEGIN
  SELECT SUM(column3) INTO total FROM history WHERE column2 = 12345;

  IF total = 0 THEN
    UPDATE history
    SET column1 = 16977
    WHERE column2 = 12345;
  END IF;
 END;

但我最后又出现了另一个错误:

错误报告 - 索引:: 1

时缺少IN或OUT参数

请帮我这个,我真的卡住了

0 个答案:

没有答案