在Oracle中增加每百条记录(逐步取决于行号)

时间:2017-02-16 07:44:02

标签: sql oracle

我正在使用select语句来生成像

这样的视图
select 0||trim(TO_CHar(max(macode)+100,99999999)) 
from view;

macode值,如

Maccode

020500
020500
033200
033200
033200
033200

但我想用100增加每个macode值。我想要这样的结果:

Maccode

020500+100 = 020600;
020500+200 = 020700;
033200+300 = 020800;
033200+400 = 020900;

这意味着每个先前的记录增量为100。

如何在不使用任何序列的情况下生成此视图?

2 个答案:

答案 0 :(得分:0)

您只需在查询中添加100,例如

select 0||(TO_NUMBER(trim(TO_CHar(max(macode),99999999)))+ ROW_NUMBER() OVER (ORDER BY Maccode) * 100) from view;

此处TO_NUMBER()会将值转换为整数,之后您可以添加100或任何其他数字TO_NUMBER(trim(TO_CHar(max(macode),99999999)))**+100**

答案 1 :(得分:0)

使用查询如下。 100%工作:

    select lpad(TO_NUMBER(macode) + (100 * ROW_NUMBER() OVER(ORDER BY Maccode)), 6, '0') from view;

以下是示例:

select macode Before, lpad(TO_NUMBER(macode) + (100 * ROW_NUMBER() OVER(ORDER BY macode)), 6, '0')  After from
     (
        select '020500' macode from dual
        UNION ALL 
        select '020500' macode from dual
        UNION ALL 
        select '033200' macode from dual
        UNION ALL 
        select '033200' macode from dual
        UNION ALL 
        select '033200' macode from dual
        UNION ALL 
        select '033200' macode from dual
      )

结果如下:

BEFORE  AFTER
020500  020600
020500  020700
033200  033500
033200  033600
033200  033700
033200  033800