我正在使用以下查询:
SELECT distinct to_char(order_date, 'Mon') as mon from meta.ship_error order
by to_char(order_date, 'Mon') asc
输出为:
"Apr"
"Aug"
"Dec"
"Feb"
"Jan"
"Jun"
"Mar"
"May"
"Nov"
"Oct"
"Sep"
""
但我想输出像:
jan
feb
mar
apr ....
我应该在查询中做哪些更改?
您通过以下月份的文字表示来订购:
order by to_char(order_date, 'Mon') asc
的结果to_char
是字符串,因此顺序是字母顺序;Postgres不再知道这与日期有关,因此没有理由将“ jan”放在“ apr”之前。
您想按日期本身排序:
order by order_date asc
或以月份的数字表示形式,您可以使用extract()
:
order by extract(month from order_date) asc
请注意,由于您DISTINCT
当前正在基于文本表示形式进行分组,因此您可能难以制作SELECT
和ORDER BY
使用不同的表示形式。显式会更容易GROUP BY
,它可以列出两种表示形式:
group by extract(month from order_date), to_char(order_date, 'Mon')
由于您可以确定给定的order_date
值不会为这两列产生单独的值,因此这不会更改行数,但是可以这样编写:
select to_char(order_date, 'Mon')
from meta.ship_error
group by extract(month from order_date), to_char(order_date, 'Mon')
order by extract(month from order_date);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句