在oracle中选择查询如何从1开始添加数字列增量2

时间:2017-01-03 17:28:13

标签: oracle

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

示例:

column1  column2 
amit      1
siva      3
pyll      5
从oracle表这里我只能得到column1。但在查询中我必须生成column2。所以我的问题是动态获取像rownum()这样的列并将其递增2.是否有任何方法可以得到这样的结果。在mysql中我们可以在查询中使用会话变量。我希望在oracle中有类似的解决方案。但我无法找到一个简单的查询来生成这样的数字。

1 个答案:

答案 0 :(得分:4)

你知道你有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
);

或其他一些变体,取决于您希望最终得到的结果。