我正在使用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。
如何在不使用任何序列的情况下生成此视图?
答案 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