假设下面的查询返回单个值:
SELECT date FROM dual WHERE name = 'max'
21-05-2011
如何循环返回前一个单值结果:
21-05-2011
21-06-2011
21-07-2011
21-08-2011
答案 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
您只需要替换实际的表名和列名。