繁体   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