【问题标题】:Syntax Error when working with Window Functions in DBeaver在 DBeaver 中使用窗口函数时出现语法错误
【发布时间】:2020-09-30 22:15:50
【问题描述】:

我正在尝试用 SQL 编写窗口函数(我使用 DBeaver)。脚本很简单,但是我得到了错误

SQL Error: Syntax error: Encountered " "(" "( "" at line 4, column 20.
Was expecting:
  <EOF> 

代码:

SELECT
  Athlete,
  Event,
  row_number() OVER() AS num
FROM summer;

我是 SQL 新手,所以任何帮助对我来说都很重要

【问题讨论】:

  • 您好,您能指定您使用的数据库吗? (PostgreSQL、Oracle 等)。好像不喜欢你写的窗口函数?
  • @F.Lazarescu 我安装了 SQLite

标签: sql sqlite window-functions dbeaver


【解决方案1】:

您必须使用旧版本的 SQLite。此代码工作正常:

create table summer (
    athlete int,
    event int
);

SELECT
  Athlete,
  Event,
  row_number() over () AS num
FROM summer;

Here 是一个 dbfiddle。

窗口函数是在 3.25 版中引入的。您可以使用以下方式检查您的版本:

 select sqlite_version();

请注意,SQL 标准指定 ORDER BYROW_NUMBER() 所必需的。在 SQLite(和其他一些数据库)中,它是可选的。

【讨论】:

    【解决方案2】:

    在 SQLite 中,“over”之后似乎不需要括号。 所以它会是这样的:

    SELECT
      Athlete,
      Event,
      row_number() OVER AS num
    FROM summer;
    

    Source

    【讨论】:

    • 感谢您的帮助!但是,它不起作用。大概,我误导了你。我确实安装了 SQLite,但是,我现在使用 csv 文件,我连接为(我猜)一个数据库。所以,csv文件放在“Dbeaver Sample Dataset (SQLite)”下面
    猜你喜欢
    • 2015-08-22
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-05
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    相关资源
    最近更新 更多