【问题标题】:How to use Group BY with foreach in a stored procedure?如何在存储过程中使用 Group BY 和 foreach?
【发布时间】:2013-02-03 10:30:51
【问题描述】:

我有一个存储过程,我想在FOREACH 语句中使用GROUP BY,如下所示:

FOREACH SELECT a.task_code, a.task_name, MAX(a.cand_num)
          FROM (SELECT DISTINCT a.task_code, a.task_name, 0 as cand_num   
                  INTO ll_task_code, ls_task_name, ll_cand_num  
                ...........
                ...........
               ) AS u
         GROUP BY a.task_code, a.task_name
    RETURN ll_task_code, ls_task_name, ll_cand_num WITH RESUME;
END FOREACH;

但我得到一个语法错误 在into ll_task_code, ls_task_name, ll_cand_num

GROUP BYFOREACH 怎么用?

【问题讨论】:

  • 奇怪的是,当您收到有关“INTO”的错误时,您认为问题出在 GROUP BY 而不是 INTO 子句。正如公认的答案正确指出的那样,INTO 子句必须紧跟在最外层的 SELECT 列表之后和 SELECT 语句的最外层的 FROM 子句之前。
  • 不,我只是把整个案子解释得更清楚。

标签: sql stored-procedures informix


【解决方案1】:

into带到外面试试。

FOREACH SELECT a.task_code, a.task_name, MAX(a.cand_num)
          INTO ll_task_code, ls_task_name, ll_cand_num  
          FROM (SELECT DISTINCT a.task_code, a.task_name, 0 as cand_num   
                ...........
                ...........
               ) AS u
         GROUP BY a.task_code, a.task_name
    RETURN ll_task_code, ls_task_name, ll_cand_num WITH RESUME;
END FOREACH;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-15
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    相关资源
    最近更新 更多