如何根据当前日期返回包含过去四年的行集?
如果此查询在 2010 年 12 月 31 日运行,它应该返回:
2007
2008
2009
2010
但如果它在 2011 年 1 月 1 日运行,它应该返回:
2008
2009
2010
2011
这是我开始的,两个返回起始年份的查询。我更喜欢第二种,因为转换为字符串对我来说有点脏。
SELECT TO_CHAR(TRUNC(sysdate, 'YY') - INTERVAL '3' YEAR, 'YYYY') FROM DUAL;
SELECT EXTRACT (YEAR FROM sysdate) - 3 FROM DUAL;
但我不知道如何生成行来充实这一点。在 SQL Server 中,我将使用 CTE,就像在此页面上的 fn_nums 函数中一样。