如何循环查询中的单个输出

时间:2016-08-25 15:57:52

标签: sql oracle

假设下面的查询返回单个值:

SELECT date FROM dual WHERE name = 'max'

21-05-2011

如何循环返回前一个单值结果:

21-05-2011
21-06-2011
21-07-2011
21-08-2011

1 个答案:

答案 0 :(得分:0)

扩展评论,您可以使用上一个问题中显示的相同机制,只需使用列名替换固定日期值,并使用真实表替换dual

使用您的伪代码:

select add_months(date, level-1)
from dual
where name = 'max'
connect by level <= 4

...但由于dual是一个没有这些列且date是保留字的真实表,它更像是:

select add_months(your_date_column, level-1)
from your_table
where name = 'max'
connect by level <= 4

作为演示,我将创建一个包含与您的过滤器匹配的单行的表格并显示您的日期:

create table your_table (name varchar2(10), your_date_column date);

insert into your_table (name, your_date_column)
values ('max', date '2011-05-21');

select add_months(your_date_column, level-1)
from your_table
where name = 'max'
connect by level <= 4;

ADD_MONTHS(YOUR_DATE_COLUMN,LEVEL-1)
------------------------------------
2011-05-21                          
2011-06-21                          
2011-07-21                          
2011-08-21                          

您只需要替换实际的表名和列名。