返回滚动12个月的当前(字符串)月

时间:2018-04-11 15:29:59

标签: sql oracle

我有下表。我只想回复本月的过去12个月。怎么会发生这种情况?

 ID    Month   
 1     201803
 2     201804
 3     201704
 4     201706

预期产出:(列出最近一个月的过去12个月)

 ID    Month   
 1     201803
 2     201804
 3     201704

2 个答案:

答案 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))