Oralcle生成数字列内联(单个语句)

时间:2015-07-17 00:10:49

标签: sql oracle sequences

我正在开发 Oracle ,而且我很难生成定义范围的列(例如,2008年至2011年)。我知道有一个序列方法,请参阅here

但是,我想让它内联,以便我的PHP可以顺利使用它。

我也知道有一种相当丑陋的方式;例如

select 2008 yr from dual 
union 
select 2009 yr from dual
union 
select 2010 yr from dual
union 
select 2011 yr from dual

有更动态的方式吗?

感谢您的帮助

2 个答案:

答案 0 :(得分:5)

试试这个:

select 2008 + level-1 yr
from dual connect by level <  5

根据需要更改常量。

答案 1 :(得分:2)

您可以使用递归查询:

with dta(yr) as (
select 2008 from dual
union all
select yr+1 from dta where yr < 2011
)
select * from dta

fiddle