在oracle中,选择查询如何将数字列从1开始递增2
我需要编写一个oracle select查询,其中需要一个额外的列,从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也能提供类似的解决方案。但我找不到一个简单的查询来生成这样的数字 您知道
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值。。。