我有一个列名session,其中存储会话的方式如下
fall-2018
fall-2019
spring-2019
spring-2020我想按这样的升序排序:
Fall-2018
Spring-2019
Fall-2019
Spring-2020我尝试过的查询:
SELECT *
FROM student
ORDER BY session +0 ASC请建议!
注意:还有五列,我必须选择全部,然后按会话排序。
发布于 2018-12-29 11:55:12
您可以先按年份(最后4个字符)订购,然后按季节顺序订购,如下所示:
select session
from students
order by right(session, 4),
session desc;session (即季节)是按顺序下降的,因为在任何一年中,春季都是在秋季之前到来的。
发布于 2018-12-29 08:54:05
编辑:好的,然后在MS中
with student as
(
select 'fall-2018' as "session" union all
select 'spring-2018' union all
select 'fall-2019' union all
select 'spring-2019' union all
select 'fall-1980' union all
select 'spring-2055' union all
select 'fall-2052'
)
select
s."session"
from student s
order by right(s."session", 4), s."session"在Oracle中,这个字符串可以这样排序
with student as
(
select 'fall-2018' as "session" from dual union all
select 'spring-2018' from dual union all
select 'fall-2019' from dual union all
select 'spring-2019' from dual
)
select
initcap(s."session")
from student s
order by substr(s."session", -4), s."session"发布于 2018-12-29 08:54:24
您可以拆分年份部分,并使用它按按进行排序。
SELECT Session
FROM student
order by PARSENAME(Replace(Session,'-','.'), 1)https://stackoverflow.com/questions/53967881
复制相似问题