如何在 Apache Derby 中获取运行计数作为查询的一部分

问题描述 投票:0回答:1

我正在尝试从 Apache Derby 数据库中的数据获取某种“运行计数”。

例如所选数据样本

第 1 部分 第二部分
d1 a1
d1 a2
d2 a1
d2 a2

我想编写一个产生以下结果的 SQL 语句

第 1 部分 第二部分 排名
d1 a1 1
d1 a2 2
d2 a1 1
d2 a2 2

即从 1 开始计算“排名”,但如果第一列中的值发生变化,则“重新开始”计数。

我无法找到如何使用纯 SQL 语句执行此操作,也无法使用用户定义的函数执行此操作,因为我需要跨多个结果行进行访问。

在 Apache Derby 中有办法做到这一点吗?

user-defined-functions derby
1个回答
0
投票

当您有如下数据时:

CREATE TABLE mytable (
Part1 CHAR(2) ,
Part2 CHAR(2) );

INSERT INTO  mytable  VALUES
('d1','a1'),
('d1','a2'),
('d2','a1'),
('d2','a2');

你可以使用 SQL:

select Part1,Part2,ROW_NUMBER() OVER (PARTITION BY Part1) as R 
from mytable;

但不幸的是德比并没有认识到这一点:

错误 42X01:语法错误:在第 1 行第 39 列遇到“PARTITION”。 发出“help”命令以获取有关 IJ 命令语法的一般信息。 任何无法识别的命令都会被视为潜在的 SQL 命令并直接执行。 有关您的服务器支持的 SQL 语法的详细信息,请参阅您的 DBMS 服务器参考文档。

© www.soinside.com 2019 - 2024. All rights reserved.