【问题标题】:Error report - ORA-00907: missing right parenthesis 00907. 00000 - "missing right parenthesis错误报告 - ORA-00907: 缺少右括号 00907. 00000 - “缺少右括号
【发布时间】: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 - “缺少右括号” *原因:
*行动:

【问题讨论】:

    标签: sql oracle


    【解决方案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;
      

      【讨论】:

        猜你喜欢
        • 2016-10-23
        • 1970-01-01
        • 1970-01-01
        • 2015-03-31
        • 2021-01-28
        • 2017-05-28
        • 1970-01-01
        • 2018-05-23
        相关资源
        最近更新 更多