2017-09-18 97 views
2

我希望最近12个月的记录组按MM-YYYY计数。如何在SQL中以正确顺序显示最近12个月的数据

select to_char((SCHEDULED_START_DT), 'MM-YYYY') , count(*) 
    from XYZ where SCHEDULED_START_DT > TRUNC (ADD_MONTHS (SYSDATE, -11), 'MM') 
    group by to_char((SCHEDULED_START_DT), 'MM-YYYY') 

这是上述查询的输出。

enter image description here

但我想输出是按以下顺序

10-2016 
11-2016 
12-2016 
01-2017 
02-2017 
03-2017 
04-2017 
05-2017 
06-2017 
07-2017 
08-2017 
09-2017 

什么是做到这一点的最好方法是什么?

+1

最简单的方法是,以显示YYYY-MM代替毫米-YYYY。 –

回答

3

一个简单的方法是从每个周期的任何一个日期进行排序。该min()max()将用于订购目的做:

select to_char(SCHEDULED_START_DT, 'MM-YYYY'), count(*) 
from XYZ 
where SCHEDULED_START_DT > TRUNC(ADD_MONTHS(SYSDATE, -11), 'MM') 
group by to_char(SCHEDULED_START_DT, 'MM-YYYY') 
order by min(SCHEDULED_START_DT); 
-1

选择TO_CHAR(SCHEDULED_START_DT, 'MM-YYYY'),COUNT(*) 从XYZ 其中SCHEDULED_START_DT> TRUNC(ADD_MONTHS(SYSDATE,-11), 'MM') group by to_char(SCHEDULED_START_DT,'MM-YYYY') order by SCHEDULED_START_DT DESC;

应该这样做!

0

最简单的方法是通过组的日期(而不是字符串),然后排序它:

select to_char(trunc(SCHEDULED_START_DT,'MM'), 'MM-YYYY') , count(*) 
from XYZ where SCHEDULED_START_DT > TRUNC (ADD_MONTHS (SYSDATE, -11), 'MM') 
group by trunc(SCHEDULED_START_DT,'MM') 
order by trunc(SCHEDULED_START_DT,'MM') 
相关问题