我有类似这样的数据
date count
01-JAN-2015 10
02-JAN-2015 20
03-JAN-2015 30
01-FEB-2015 4
02-FEB-2015 8
03-FEB-2015 12
01-MAR-2015 5
02-MAR-2015 10
03-MAR-2015 15
01-APR-2015 6
02-APR-2015 12
03-APR-2015 18
01-MAY-2015 7
02-MAY-2015 14
03-MAY-2015 21
01-JUN-2015 8
02-JUN-2015 16
03-JUN-2015 24
01-JUL-2015 8
02-JUL-2015 16
03-JUL-2015 24
我需要几个月的结果组,从当月开始可变数月
示例如果我从今天开始只需要接下来的2个月,那么结果就是
MAR-2015 24
APR-2015 36
如果我从今天开始只需要3个月,那么结果就是
MAR-2015 24
APR-2015 36
MAY-2015 42
我查询了具有开始日期和月结束日期的get变量月份
SELECT TO_CHAR(TRUNC(ADD_MONTHS(sysdate,level),'MM'),'MON-yyyy') MNTH ,
TO_CHAR(TRUNC(ADD_MONTHS(sysdate,level),'MM'),'dd-MON-yyyy') strt_date,
TO_CHAR(TRUNC(LAST_DAY(ADD_MONTHS(SYSDATE, level))),'dd-MON-yyyy') end_date
FROM dual
CONNECT BY LEVEL <= p_level
其中p_level
是可变数月,如2,3,4 ....
任何1帮助使用SQL查询而不使用PL / SQL
答案 0 :(得分:2)
您根本不需要使用connect by子句。
select to_char(trunc(t.date, 'mm'), 'MON-YY')
, count(1)
from your_table_here t
where trunc(t.date, 'mm') > sysdate
and trunc(t.date, 'mm') < add_months(sysdate, :months)
group by trunc(t.date, 'mm')
只需为:months
变量插入正确的值。