簡體   English   中英

Oracle日期/順序問題

[英]Oracle date / order by question

我想從oracle表中選擇一個格式為select (to_char(req_date,'MM/YYYY'))但我也想以這種日期格式訂購結果集。

我希望他們像日期而不是字符串一樣訂購。

像這樣

09/2009
10/2009
11/2009
12/2009
01/2010
02/2010
03/2010
04/2010
05/2010
06/2010
07/2010
08/2010
09/2010
10/2010
11/2010
12/2010

不喜歡

01/2010
02/2010
03/2010
04/2010
05/2010
06/2010
07/2010
08/2010
09/2009
09/2010
10/2009
10/2010
11/2009
11/2010
12/2009
12/2010

在sql中有什么辦法嗎?

完整的SQL是:

SELECT (to_char(req_date,'MM/YYYY')) as monthYear, count(req_id) as count
FROM   REQUISITION_CURRENT t
GROUP BY to_char(req_date,'MM/YYYY')

謝謝

試試這個。 它的工作原理很有效,但看起來有些混亂。

select to_char(trunc(req_date, 'MM'),'MM/YYYY') as monthYear
      ,count(req_id) as count
  from requisition_current
 group 
    by trunc(req_date, 'MM')
 order
    by trunc(req_date, 'MM');

請試試

Select req_date, (to_char(req_date,'MM/YYYY')) from MY_TABLE order by req_date

您可以自由添加其他排序字段,即使它們是相同的字段。

試試這個

select monthyear,yr,month,count(req_id)
from
(
SELECT (to_char(req_date,'MM/YYYY')) as monthYear, to_char(req_date,'YYYY') yr, to_char(req_date,'mm') month, req_id
FROM   REQUISITION_CURRENT t
) x
GROUP BY monthyear,yr,month
order by yr, month

我參加派對的時間相當晚,但我發現實現這一目標的最直觀方式如下:

SELECT DISTINCT
   to_char(req_date,'MM/YYYY') as monthYear, 
   count(req_id) as count
FROM   
   REQUISITION_CURRENT t
GROUP BY 
   to_char(req_date,'MM/YYYY')
ORDER BY 
   to_date(monthYear,'MM/YYYY')

它可能不是計算效率最高的方法,因為它將日期轉換為字符然后再轉換為日期,但這正是您要求查詢這樣做的原因。 它還可以避免添加支持列或嵌套子查詢。

只需使用order by req_date而不是order by to_char(req_date,'MM/YYYY')

嘗試

SELECT ... 
ORDER BY MIN(req_date)

這將繞過Oracle關於在GROUP BY之后可以選擇什么的規則。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM