具有重复值的H2 SQL序列计数

我有一个ID表,其中有一些重复项,我需要根据ID创建一个序列。我正在努力实现以下目标。

[ROW]  [ID] [SEQID]
  1     11     1
  2     11     2
  3     12     1
  4     13     1
  5     13     2

我使用的是H2 DB的旧版本,该版本不使用Windows函数,因此必须使用直接SQL来执行此操作。我已经尝试过自己加入表格,但是由于重复的值会引起问题,所以我没有得到想要的结果,有什么想法吗?我在行号中具有唯一的标识符,但是不确定如何使用它来实现我想要的吗?

SELECT A.ID,COUNT(*) FROM TABLE A
JOIN TABLE B
ON A.ID = B.ID
WHERE A.ID >= B.ID
GROUP BY A.ID;
yearf 回答:具有重复值的H2 SQL序列计数

使用可计算序列的子查询:

select
  t.row,t.id,(select count(*) from tablename where id = t.id and row <= t.row) seqid
from tablename t

它不如窗口函数高效,但可以满足您的期望。
请参见demo(对于MySql,但这是标准SQL)。
结果:

| row | id  | seqid |
| --- | --- | ----- |
| 1   | 11  | 1     |
| 2   | 11  | 2     |
| 3   | 12  | 1     |
| 4   | 13  | 1     |
| 5   | 13  | 2     |
本文链接:https://www.f2er.com/3145797.html

大家都在问