我想从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')
由于
答案 0 :(得分:3)
试试这个。它有效,而且效率很高,但看起来有点混乱。
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');
答案 1 :(得分:1)
请尝试
Select req_date, (to_char(req_date,'MM/YYYY')) from MY_TABLE order by req_date
您可以自由添加其他排序字段,即使它们是相同的字段。
答案 2 :(得分:1)
试试这个
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
答案 3 :(得分:0)
只需使用order by req_date
代替order by to_char(req_date,'MM/YYYY')
。
答案 4 :(得分:0)
尝试
SELECT ...
ORDER BY MIN(req_date)
这将绕过Oracle关于在GROUP BY之后可以选择什么的规则。
答案 5 :(得分:0)
我参加派对的时间相当晚,但我发现实现这一目标的最直观方式如下:
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')
它可能不是计算效率最高的方法,因为它将日期转换为字符然后再转换为日期,但这正是您要求查询这样做的原因。它还可以避免添加支持列或嵌套子查询。