如何使用年份和日期订购SQL结果?

时间:2015-04-23 06:39:33

标签: mysql sql postgresql

我写过PostgreSQL查询,它检索月,年和相应的计数。我的查询如下:

SELECT 
(CASE
WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 01 THEN 'January'
WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 02 THEN 'February'
WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 03 THEN 'March'
WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 04 THEN 'April'
WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 05 THEN 'May'
WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 06 THEN 'June'
WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 07 THEN 'July'
WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 08 THEN 'Augst'
WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 09 THEN 'September'
WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 10 THEN 'October'
WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 11 THEN 'November'
WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 12 THEN 'December'
END) as MONTH ,EXTRACT(YEAR FROM app_pgm_req_dt) as YEAR,count(*) 
FROM app_pgm_choice GROUP BY MONTH,YEAR
order by YEAR

由于结果按月和年排序,其订购月按字母顺序排列,我希望按实际月份顺序排序。

输出:

"September";1968;4
"September";1970;1
"Augst";1971;3
"February";1975;1
"February";1977;1
"May";1977;1
"September";1978;1
"February";1978;3
"April";1978;1
"September";1979;1
.....
.....

年份...... 1978年......结果应该像feb,4月和9月一样订购 我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

所以只需按月('01' - '12')订购:

SELECT CASE WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 01 THEN 'January'
         WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 02 THEN 'February'
         WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 03 THEN 'March'
         WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 04 THEN 'April'
         WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 05 THEN 'May'
         WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 06 THEN 'June'
         WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 07 THEN 'July'
         WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 08 THEN 'Augst'
         WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 09 THEN 'September'
         WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 10 THEN 'October'
         WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 11 THEN 'November'
         WHEN EXTRACT(MONTH FROM app_pgm_req_dt) = 12 THEN 'December'
       END AS MONTH,
       EXTRACT(YEAR FROM app_pgm_req_dt) AS YEAR,
       COUNT(*) 
  FROM app_pgm_choice 
 GROUP BY YEAR, MONTH, TO_CHAR (app_pgm_req_dt, 'MM')
 ORDER BY YEAR, TO_CHAR (app_pgm_req_dt, 'MM');

请参阅TO_CHAR文档。检查this demo