你知道你有rownum可用,但退后一步。你从连续序列1,2,3,4,5,6,...开始,并且你想产生一个奇数1,3,5,7,9,11,...序列你需要找出一个将一个转换为另一个的算法。
如果你说你的起始号码是n
那么你想生成m
其中m=(2*n)-1
。
可以使用rownum
(或row_number()
等)来生成n
值:
select column1, rownum as n
from your_table;
然后你可以应用算法:
select column1, (2*rownum)-1 as column2
from your_table;
COLUMN1 COLUMN2
------- ----------
amit 1
siva 3
pyll 5
jane 7
john 9
anna 11
...
有了这个简单的方法的column2
值与column1
的值不同。您可以使用row_number()
或rank()
代替,并使用合适的order by
子句;或者使用子查询其是否排序并应用之外的ROWNUM(该算法):
select column1, (2*rownum)-1 as column2
from (
select column1
from your_name
order by column1
);
或其他一些变化,这取决于你想落得结果。
命令是否重要?考虑一下rownum会为每行提供的数字,然后考虑如何将该数字转换为您所展示的数字 - 您将如何手动执行以开始,然后考虑如何将其转换为SQL。你没有增加任何确切的东西;你正在操纵rownum值... –