トップページに戻る    次のSQLパズルへ    前のSQLパズルへ

10-285 最新日から3ヶ月前まで表示

SQLパズル

daysTable
days
----------
2008/01/01
2008/02/01
2008/03/01
2008/04/01
2008/05/01
2008/06/01
2008/07/01

最新日から3ヶ月前まで表示する。

出力結果
days
----------
2008/05/01
2008/06/01
2008/07/01

こちらを参考にさせていただきました(英語)


データ作成スクリプト

create table daysTable(days) as
select date '2008-01-01' from dual union all
select date '2008-02-01' from dual union all
select date '2008-03-01' from dual union all
select date '2008-04-01' from dual union all
select date '2008-05-01' from dual union all
select date '2008-06-01' from dual union all
select date '2008-07-01' from dual;


SQL

select days
  from (select days,
        max(days) over() as maxDay
          from daysTable)
 where days > add_months(maxDay,-3);


解説

3ヶ月前の定義によっては、add_months関数が使えない可能性があります。
10-93 前月の同一日付を取得