gpt4 book ai didi

oracle - 在 oracle select 查询中如何添加一个数字列从 1 开始递增 2

转载 作者:行者123 更新时间:2023-12-02 00:49:04 24 4
gpt4 key购买 nike

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

示例:

column1  column2 
amit 1
siva 3
pyll 5

从 oracle 表中我只能得到 column1。但在查询中我必须生成 column2。所以我的问题是动态获取像 rownum() 这样的列并将其递增 2。有什么方法可以得到这样的结果。在 mysql 中,我们可以在查询中使用 session 变量。我希望在 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
);

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

关于oracle - 在 oracle select 查询中如何添加一个数字列从 1 开始递增 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41449068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com