Sql Can';t在匿名块中向我的表插入值..但如果我运行查询时没有开始-结束,则它会起作用

Sql Can';t在匿名块中向我的表插入值..但如果我运行查询时没有开始-结束,则它会起作用,sql,oracle,plsql,group-by,sql-insert,Sql,Oracle,Plsql,Group By,Sql Insert,如果我在begin end/中使用此查询,它将显示错误 ORA-00979:不是表达式的组 ORA-06512:在第3行 97900000-“不是表达式的组” *原因: *行动: 但是,如果我在plsql块之外运行此查询,它将正常工作…请帮助我解决此问题….实际上,我删除了group by子句中的摘录,它工作正常 但另一个系统工作正常,即使在GROUPBY子句中提取…您使用的是Oracle的哪个版本和补丁级别?有可能你碰到了一个bug——这个错误有几个原因。它可能与插入无关——如果在游标中使用该

如果我在begin end/中使用此查询,它将显示错误 ORA-00979:不是表达式的组 ORA-06512:在第3行 97900000-“不是表达式的组” *原因:
*行动:


但是,如果我在plsql块之外运行此查询,它将正常工作…请帮助我解决此问题….

实际上,我删除了group by子句中的摘录,它工作正常


但另一个系统工作正常,即使在GROUPBY子句中提取…

您使用的是Oracle的哪个版本和补丁级别?有可能你碰到了一个bug——这个错误有几个原因。它可能与插入无关——如果在游标中使用该查询部分并在结果中循环,您还会看到它吗?不过,您的查询可能会简化—我会首先删除所有的
order by
子句,这些子句没有用处,可能与bug有关;您可以通过一些返工来删除子查询。谢谢,现在它可以工作了
INSERT INTO  mtl_strmnth_grid_tmp
( guid,
  rigmove_mnth_no,
  rigmove_month,
  AVERAGE,
  actual
)
SELECT
    '1234',
    A.rigmove_mnth_no,
    A.rigmove_month,
    B.AVG as "AVERAGE",
    b.actual AS "ACTUAL"
FROM
    (
        SELECT DISTINCT
            to_char(quarter_date,'MM') AS rigmove_mnth_no,
            to_char(quarter_date,'MONTH') AS rigmove_month
        FROM
            t_adm_calendar
        WHERE
            quarter_date BETWEEN TO_DATE('01/01/2018','DD/MM/YYYY') AND TO_DATE('31/01/2018','DD/MM/YYYY')
    ) A
    LEFT OUTER JOIN (
        SELECT
            rigmove_mnth_no,
            rigmove_month,
            SUM(AVG) AS AVG,
            actual
        FROM
            (SELECT
                    EXTRACT(MONTH FROM sm1.rigmove_date) rigmove_mnth_no,
                    to_char(sm1.rigmove_date,'MONTH') rigmove_month,
                    SUM(DISTINCT sm2.AVG) AS AVG,
                    sm1.main_activity_code_pk,
                    SUM(sm1.actual) AS actual
                FROM
                    v_report_smdelivery sm1
                    LEFT JOIN v_report_smdelivery_budget sm2 ON sm1.main_activity_code_pk = sm2.main_activity_code_pk
                WHERE
                    sm1.rigmove_date BETWEEN TO_DATE('01/01/2018','DD/MM/YYYY') AND TO_DATE('31/01/2018','DD/MM/YYYY')
                GROUP BY
                    EXTRACT(MONTH FROM sm1.rigmove_date),
                    to_char(sm1.rigmove_date,'MONTH'),
                    sm1.main_activity_code_pk
                ORDER BY
                    EXTRACT(MONTH FROM sm1.rigmove_date),
                    to_char(sm1.rigmove_date,'MONTH')
            )
        GROUP BY
            rigmove_mnth_no,
            rigmove_month,
            actual

        ORDER BY
            rigmove_mnth_no,
            rigmove_month
    ) b ON A.rigmove_mnth_no = b.rigmove_mnth_no
ORDER BY rigmove_mnth_no
;