我使用select语句生成视图,如下所示
select 0||trim(TO_CHar(max(macode)+100,99999999))
from view;macode值,如
Maccode
020500
020500
033200
033200
033200
033200但我希望每个macode值都递增100。我想要这样的结果:
Maccode
020500+100 = 020600;
020500+200 = 020700;
033200+300 = 020800;
033200+400 = 020900;这意味着之前的每条记录都会递增100。
如何在不使用任何序列的情况下生成此视图?
发布于 2017-02-16 15:59:24
使用query,如下所示。工作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发布于 2017-02-16 15:53:49
您可以简单地在查询中添加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**
https://stackoverflow.com/questions/42267776
复制相似问题