我有下表。我只想回复本月的过去12个月。怎么会发生这种情况?
ID Month
1 201803
2 201804
3 201704
4 201706
预期产出:(列出最近一个月的过去12个月)
ID Month
1 201803
2 201804
3 201704
答案 0 :(得分:1)
假设Month
是一个字符串,您可以这样做:
select t.*
from t
where t.Month = to_char(sysdate - interval '11' month, 'YYYYMM');
如果您希望根据数据中的最新月份,那么:
select t.*
from (select t.*, max(Month) over () as max_month
from t
) t
where month >= to_char(to_date(max_month, 'YYYYMM') - interval '11' month, 'YYYYMM');
11
是因为最新月份也包含在结果集中。
答案 1 :(得分:-2)
这也应该有用。
Select ID, Month
From Table
Where max(left(month,4) = left(Month,4)
OR (max(left(month,4) = left(Month,4) - 1
AND right(max(month),2) <= right(month,2))