一個很有難度的查詢問題,請高手解一下,不是高手就學習一下(100)

  • 主题发起人 主题发起人 ygj9712
  • 开始时间 开始时间
Y

ygj9712

Unregistered / Unconfirmed
GUEST, unregistred user!
A1(這是編碼) A2 --------------------------------------------BE72657456 230 XX785664234 500 TE46464644 300 OH46446464 400 ---------------------------------------------------怎麼寫查詢語寫可以實現: A1(這是編碼) A2 -------------------------------------------------- OH46446464 400 XX785664234 500 TE46464644 300 BE72657456 230 --------------------------------------------------- 也就是按照前兩個字母有條件的排序 order by 行嗎? 可以設定升降序以外的排序方式嗎?
 
除了Order By A2外,我看不错有什么规律
 
要按A1排
 
如果是sql server数据库,可以这样排序order by charindex(left(a1,2), '0H,XX,TE,BE')如果是其它数据库,就替换成相应的函数
 
A1有什么规律吗?还是A1就这OH46446464 XX785664234 TE46464644 BE72657456 四种情况。
 
LZ的问题不够清楚,但是不难,高手是学不到东东的。
 
我不是高手,我要顶一下
 
最简单、最有效的办法就是增加一个字段,然后Order By
 
赞同Renping_zhang,有时候解决问题的方法要变通。
 
用case when 语句来排序,如:order by case when a1='OH46446464' then 1 when a1='XX785664234' then 2 when a1='TE46464644' then 3 when a1='BE72657456' then 5 else 6 end
 
所谓的“排序”,总得按照某个条件来排吧?要么升序,要么降序。可以仿照:select * from Table order by dbo.fn_order(left(A1,2))fn_order是自定义的函数,生成目标序列,然后按照这个目标序列来排。
 
后退
顶部