我希望MM-YYYY记录最近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')
这是上述查询的输出。
但我希望输出符合以下顺序
10-2016
11-2016
12-2016
01-2017
02-2017
03-2017
04-2017
05-2017
06-2017
07-2017
08-2017
09-2017
这样做的最佳方式是什么?
答案 0 :(得分: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 :(得分: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')
答案 2 :(得分:-1)
选择to_char(SCHEDULED_START_DT,'MM-YYYY'),count(*) 来自XYZ 其中SCHEDULED_START_DT> TRUNC(ADD_MONTHS(SYSDATE,-11),'MM') 按to_char分组(SCHEDULED_START_DT,'MM-YYYY') 按SCHEDULED_START_DT DESC排序;
应该这样做!