我想插入表,使列数据的间隔为1000

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

我有一个表,其数据如下:enter image description here

现在,我想将数据插入到新表中,但div_number的间隔为1000。例如:enter image description here

使用带有trunc函数的查询,我得到了结果:enter image description here

但是我希望结果相差1000。如何从选定的表中获得所需的结果?任何人都可以帮助我进行查询吗?

oracle oracle12c
1个回答
0
投票

DIV_NUMB值必须为全新,它们与您想要获得的没有任何共同点。

如果您知道您想从2000开始,那么

SQL> select 1000 + 1000 * row_number() over (order by t.datum, t.div_numb) div_numb,
  2    t.datum
  3  from test t
  4  order by t.datum, t.div_numb;

  DIV_NUMB DATUM
---------- ----------
      2000 01.04.2020
      3000 01.04.2020
      4000 01.04.2020
      5000 08.04.2020

SQL>

如果必须计算起点,那么它将变得更加复杂,例如

SQL> with mdn (div_numb, gap) as
  2    (select (trunc(min(div_numb) / 1000) * 1000) - 1000,
  3            1000
  4     from test)
  5  select
  6    (m.div_numb * row_number() over (order by t.datum, t.div_numb)) + m.gap div_Numb,
  7    t.datum
  8  from mdn m cross join test t;

  DIV_NUMB DATUM
---------- ----------
      2000 01.04.2020
      3000 01.04.2020
      4000 01.04.2020
      5000 08.04.2020

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