【问题标题】:SQL error: FROM keyword not found where expectedSQL 错误:未在预期的位置找到 FROM 关键字
【发布时间】:2014-12-01 00:36:04
【问题描述】:

好的,我收到一个错误:java.sql.SQLException: ORA-00923: FROM 关键字在我运行此查询时未在预期的位置找到。我不明白我在下面有 FROM 语句。谢谢。

    ResultSet rs = 
stmt.executeQuery("SELECT Airline, 
Avg((extract(day from (Actual_time - Scheduled_time)) * 24 * 60) (extract(hour from (Actual_time - Scheduled_time)) * 60) (extract(minute from (Actual_time - Scheduled_time)))) 
AS 'Average Delay in Minutes' 
FROM Flight Group by Airline");

【问题讨论】:

  • 尝试在平均延迟分钟数周围加上引号
  • 刚改了还是不行。
  • 至少它缺少一个逗号/运算符。 60) (extract 交互式客户端 来分解和重​​建 SQL 以解决语法问题。
  • 应该用双引号括住列别名。

标签: java sql oracle


【解决方案1】:

也许格式化代码可以使事情更容易阅读

在字段名中放空格是个坏主意

SELECT
    Airline, 
    AVG(
        (EXTRACT(DAY FROM (Actual_time - Scheduled_time)) * 24 * 60)
        (EXTRACT(HOUR FROM (Actual_time - Scheduled_time)) * 60)
        (EXTRACT(MINUTE FROM (Actual_time - Scheduled_time)))
    ) AS Average_delay_in_minutes 
FROM Flight
GROUP BY Airline;

【讨论】:

    【解决方案2】:

    我不知道你为什么有像(day)(hour)(minute) 这样的逻辑。想必,组件之间需要+

    SELECT Airline, 
           Avg((extract(day from (Actual_time - Scheduled_time)) * 24 * 60) +
               (extract(hour from (Actual_time - Scheduled_time)) * 60) +
               (extract(minute from (Actual_time - Scheduled_time)))
              ) AS AverageDelayInMinutes
    FROM Flight
    Group by Airline;
    

    您的括号在原始查询中似乎是平衡的,所以我怀疑问题是缺少运算符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-17
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      • 2017-08-08
      相关资源
      最近更新 更多