2017-09-18 7 views
2

最後の12か月のレコードグループの数をMM-YYYYで求めます。最後の12ヶ月のデータをSQLで正しい順序で表示する方法

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の代わりに、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')、(*)カウント SCHEDULED_START_DT> TRUNC(ADD_MONTHS(SYSDATE、-11)XYZ から、 'MM') to_char(SCHEDULED_START_DT、 'MM-YYYY')によるグループ 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') 
関連する問題