2016-07-31 78 views
2

示例:在我的仓库中,我有行,每行有5个货架。SQL:按列排序,然后按子串混合asc和desc

我正在走过走道,第一排到我的右侧,第二排到我的左侧,我开始从第一排从第一排到第五排,然后我从第五排到第五排。

我有一列的数据库如下:

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 

的前两个字母是行和下一个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

什么比第二和第一其它行的休息吗? – TheGameiswar

+0

同样的东西,基本上每个奇数行都是ASC,每个偶数都是DESC。谢谢 – Harry

+2

首先规范你的模式。这意味着一列行,一列货架和一列剩下的东西。 MOD()将解决其余的问题。并找出你正在使用的RDBMS。 – Strawberry

回答

1

Demo Here

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 
+0

很棒的回答!现在我将如何处理,如果我有结果跳过一排(01之后我有03,所以没有项目从第2行中选择),因此01-005-A-03之后我想要03-005-A-03这意味着在此我想要第3行DESC和第4行ASC? – Harry

+0

你可以请问这个新的问题,我不能理解你的意见 – TheGameiswar

+0

我建议询问一个新的问题以及预期的输出基于 – TheGameiswar

相关问题