在oracle中,选择查询如何将数字列从1开始递增2

在oracle中,选择查询如何将数字列从1开始递增2,oracle,Oracle,我需要编写一个oracle select查询,其中需要一个额外的列,从1开始递增2 示例: column1 column2 amit 1 siva 3 pyll 5 在oracle表中,我只能得到第1列。但在查询中,我必须生成第2列。因此,我的问题是动态获取一个类似rownum()的列,并将其递增2。有没有办法得到这样的结果。在mysql中,我们可以在查询中使用会话变量。我希望oracle也能提供类似的解决方案。但我找不到一个简单的查询来生成这样的数字 您知道

我需要编写一个oracle select查询,其中需要一个额外的列,从1开始递增2

示例:

column1  column2 
amit      1
siva      3
pyll      5

在oracle表中,我只能得到第1列。但在查询中,我必须生成第2列。因此,我的问题是动态获取一个类似rownum()的列,并将其递增2。有没有办法得到这样的结果。在mysql中,我们可以在查询中使用会话变量。我希望oracle也能提供类似的解决方案。但我找不到一个简单的查询来生成这样的数字

您知道您有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值。。。