示例:在我的仓库中,我有行,每行有5个货架。
我正走过过道,右边是第1排,左边是第2排,我从第1行开始从1到5选择订单,然后从第5行到第5行从第5行开始。
我在数据库中有一列如下:
01-001-A-01
01-002-A-02
01-003-A-03
01-004-A-01
01-005-A-03
02-001-A-01
02-002-A-02
02-003-A-03
02-004-A-01
02-005-A-03
前2个字母是行,接下来的3个字母是货架,我想实现第二行应该是DESC顺序,而第一行(和第三个等)应该是ASC顺序。如下:
01-001-A-01
01-002-A-02
01-003-A-03
01-004-A-01
01-005-A-03
02-005-A-03
02-004-A-01
02-003-A-03
02-002-A-02
02-001-A-01
所以基本上每个奇数行都是ASC,每个甚至都是DESC。
答案 0 :(得分:1)
select *
from #temp
order
by substring(id,1,2),
case
when substring(id,1,2)%2=0 then row_number() over (partition by substring(id,1,2) order by SUBSTRING(id,4,3) desc)
else row_number() over (partition by substring(id,1,2) order by SUBSTRING(id,4,3) asc)
end