現在の日付に基づいて過去 4 年間で構成される行セットを返すにはどうすればよいですか?
このクエリを 2010 年 12 月 31 日に実行すると、次のように返されます。
2007
2008
2009
2010
ただし、2011 年 1 月 1 日に実行すると、次のように返されます。
2008
2009
2010
2011
これが私が始めたもので、開始年を返す 2 つのクエリです。文字列への変換は私には少し汚いと感じるので、私は2番目を好みます。
SELECT TO_CHAR(TRUNC(sysdate, 'YY') - INTERVAL '3' YEAR, 'YYYY') FROM DUAL;
SELECT EXTRACT (YEAR FROM sysdate) - 3 FROM DUAL;
しかし、これを肉付けするために行を生成する方法がわかりません。SQL Server では、このページの fn_nums 関数のように CTE を使用します。