如何在不创建任何表的情况下在 oracle sql 查询中创建增量数字?我曾尝试使用“with”子句,但未能得到预期的结果。我正在使用 oracle 10g
这是我尝试的代码,它似乎不起作用:
WITH
TABLE3 AS ( SELECT 2008 YEARS FROM dual WHERE 1=1
union all
select t3.YEARS+1 from TABLE3 t3
WHERE 1=1 AND t3.YEARS < 2011
)
select YEARS from TABLE3
我想要的预期结果是:
2008
2009
2010
2011
我认为这将起作用(基于此页面(http://psoug.org/definition/LEVEL.htm)作为起点):
这应该返回:
调整 2008 和 4 以获得不同的结果。
类似于 Kerri 的答案,但没有
with
(并受到SO 答案的启发):或者,如果您的目标是获取当前年份的前三年,而不对开始年份进行硬编码:
看起来 OP 正在尝试使用递归子查询来解决问题。这在 10g 中不起作用,因为直到 11.2 才添加该功能,但在 11.2+ 中,以下也将是该问题的有效解决方案。
OP 的查询中唯一缺少的是
(YEARS)
.为什么不直接创建一个序列?
编辑:
对于小范围的序列值,您可以使用以下内容:
您只需要一个具有足够行数的表。
这是一个添加多个标志并根据 case 语句递增的示例。
-- 结果集如下
只用 rownum 加一 select rownum + 100 from "table" order by 1;
结果为 101、102 等。