有没有办法以交替的方式对sql进行排序(拼接最高和最低的结果)
例如,按年份降序的结果如下所示:
2016
2015
2014
2013按年份升序的结果如下所示
1990
1991
1992
1993我想要实现的是:
2016
1990
2015
1991可能有一种手动的方法(即对两个结果集进行排序和限制,然后对两个结果集进行UNION),但除此之外,SQL (在我的例子中是Postgres)本身是否支持这一点?
发布于 2016-11-15 16:41:19
假设您的表table_name的列名为year_column (如果您有一个查询,请将table_name更改为您的查询,并将same更改为year_column)
然后,您可以使用以下代码:
SELECT
ROW_NUMBER() OVER (ORDER BY year_column DESC) rnm_desc,
ROW_NUMBER() OVER (ORDER BY year_column ASC) rnm_asc,
t.*
FROM
table_name t
ORDER BY
LEAST(rnm_desc, rnm_asc),
year_column DESC;发布于 2016-11-15 16:40:49
select *
from t
order by least (row_number () over (order by yr asc),row_number () over (order by yr desc))
,yr desc
;https://stackoverflow.com/questions/40605157
复制相似问题