2017-09-18 94 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') 
相關問題