【问题标题】:Sequence in SELECT statementSELECT 语句中的序列
【发布时间】:2021-01-17 01:02:30
【问题描述】:

我需要在 Oracle 中创建带有序列的 SELECT 语句。当 col_flag 为 1 时,序列随 mod(col_seq, max_seq) 增加,当 col_flag 为 0 时,序列不增加。

例子:

col_group col_flag  col_seq 
--------- --------  --------
A         1         1
A         1         2
A         1         3
A         0         3
A         0         3
B         1         4
B         1         1
B         1         2
B         1         3
B         0         3
B         1         4
B         1         1
C         1         2
C         0         2 
...

【问题讨论】:

  • 重置序列的规则是什么? max_seq 是什么?
  • max_seq 是 seq 的最大计数。例如是 4

标签: sql oracle select sum window-functions


【解决方案1】:

猜测窗口总和和算术可以做你想要的 - 但你需要一个定义行顺序的列,我假设 id

select col_flag,
    mod(sum(col_flag) over(order by id), 4) + 1 col_seq
from mybltae

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-16
    • 2022-11-19
    • 2013-09-17
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 2023-04-07
    • 2020-09-26
    相关资源
    最近更新 更多