错误报告 - ORA-00907: 缺少右括号 00907. 00000 - “缺少右括号

Posted

技术标签:

【中文标题】错误报告 - ORA-00907: 缺少右括号 00907. 00000 - “缺少右括号【英文标题】:Error report - ORA-00907: missing right parenthesis 00907. 00000 - "missing right parenthesis 【发布时间】:2020-11-22 01:42:15 【问题描述】:

我需要帮助。我对 SQL 编码比较陌生。

我需要创建以下视图: 每个抄表员在当月读取的抄表数(此视图应该可以随时使用,无需更改以适应日期)。

我有这个代码

CREATE VIEW ViewA AS
SELECT SUM(meter) FROM reading
WHERE MONTH(columnName) = MONTH(CURRENT_DATE());

但是错误说: 从行开始的错误:命令中的 1 - 创建视图 ViewA 为 从读数中选择总和(米) WHERE MONTH = MONTH(CURRENT_DATE()) 错误报告 - ORA-00907: 缺少右括号 00907. 00000 - “缺少右括号” *原因: *行动:

【问题讨论】:

【参考方案1】:

如果您需要每个抄表器,则需要聚合:

CREATE VIEW ViewA AS
    SELECT meter_reader, SUM(meter)
    FROM reading
    WHERE TRUNC(date_column, 'Month') = TRUNC(sysdate, 'Month')
    GROUP BY meter_reader -- whatever that column is

一般来说,这样写会更有效率:

CREATE VIEW ViewA AS
    SELECT meter_reader, SUM(meter)
    FROM reading
    WHERE date_column >= TRUNC(sysdate, 'Month') AND
          date_column < TRUNC(sysdate, 'Month') + INTERVAL '1' MONTH
    GROUP BY meter_reader -- whatever that column is

【讨论】:

【参考方案2】:

MONTH 不是 Oracle 函数,您不希望在 CURRENT_DATE 之后使用大括号,您需要为聚合值指定别名。

CREATE VIEW ViewA AS
SELECT SUM(meter) AS total_reading
FROM reading
WHERE  EXTRACT( MONTH FROM columnName) = EXTRACT( MONTH FROM CURRENT_DATE );

但是,这将汇总任何年份的当前月份。如果您只想要当前月份,那么:

CREATE VIEW ViewA AS
SELECT SUM(meter) AS total_reading
FROM reading
WHERE  columnName >= TRUNC( CURRENT_DATE, 'MM' )
AND    columnName <  ADD_MONTHS( TRUNC( CURRENT_DATE, 'MM' ), 1 );

db小提琴here

但是,您的“作业”问题是:

每个抄表员在当月抄表的次数

你没有找到这个;您可能想使用COUNT 而不是SUM 并且您想使用GROUP BY 来获取每个抄表器的值(但您没有给出表定义,因此不清楚应该按哪一列分组) .

但类似:

CREATE VIEW ViewA AS
SELECT meter_reader,
       COUNT(meter) AS num_meters_read
FROM   reading
WHERE  columnName >= TRUNC( CURRENT_DATE, 'MM' )
AND    columnName <  ADD_MONTHS( TRUNC( CURRENT_DATE, 'MM' ), 1 )
GROUP BY meter_reader;

【讨论】:

以上是关于错误报告 - ORA-00907: 缺少右括号 00907. 00000 - “缺少右括号的主要内容,如果未能解决你的问题,请参考以下文章

ORA-00907: 缺少右括号 00907. 00000 - “缺少右括号” *原因:*操作:行错误:44 列:30

错误:ORA-00907:oracle 缺少右括号

请帮助解决“ORA-00907:缺少右括号”错误

C# 错误 ORA 00907:缺少右括号

获取“ORA-00907:缺少右括号”,找不到错误

创建表并收到错误,因为 ora 00907 缺少右括号