教程学院
图像设计 多媒体类 机械制图 办公软件 操作系统 系统编程 网站编程 网页制作 数据库类 网络路由 网络工程 网络安全 考试认证
firefox火狐浏览器下载
酷网学院
CAD
AutoCad Cam350 ProEngineer GCcam MATLAB Unigraphics SolidWorks CAXA Solid3000 Cimatron EdgeCAM
系统
安全 防火墙 病毒 WinXP Win2003 Vista
数据库
编程
网络
精彩图库
  当前位置: 库库中文网 · 数据库类教程 · MSSQL教程 · MsSql综合技巧

这样排序怎么样完成?

 
学院最新推荐文章
PS教程推荐
 
『这样排序怎么样完成?』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
作者:MeChecks… 来源:C.S.D.N 点击数: 更新时间:2008-7-24 
我现在要实现两种排序方式
一按字段 编码排序  二 按人员排序

假设表中字段 code    user

          J0012    张三
            D0054    张三
            j0015    张三
            t0048    李四
            0048    王五
            T0452    张三

编码排序 按J D T 没有字母 排序 不区分大小写

人员排序 按指定人员 如用户选择 王五,张三,李四 那就按这样的人员排序

这个问题第1个回答:
select * from tb
order by case left(code,1) when 'J' then 1
when 'D' then 2 when 'T' then 3 end
这个问题第2个回答:
SQL code

create table tb(code varchar(10),[user] varchar(10))

insert into tb values('J0012',   '张三') 

insert into tb values('D0054',   '张三') 

insert into tb values('j0015',   '张三') 

insert into tb values('t0048',   '李四') 

insert into tb values('0048' ,   '王五') 

insert into tb values('T0452',   '张三') 

go



select * from tb 

order by case left(code,1) when 'J' then 1 

when 'D' then 2 when 'T' then 3 else 4 end 



drop table tb



/*

code       user       

---------- ---------- 

J0012      张三

j0015      张三

D0054      张三

t0048      李四

T0452      张三

0048       王五



(所影响的行数为 6 行)

*/


这个问题第3个回答:

按编码排:

ORDER BY CASE LEFT(Code,1) WHEN 'J' THEN 1 WHEN 'D' THEN 2 WHEN 'T' THEN 3 ELSE 4 END

按指定用户名排序:

DECLARE @SortKey VARCHAR(30)
SET @SortKey='王五,张三,李四'

ORDER BY CHARINDEX(Code,@SortKey)

这个问题第4个回答:
SQL code

create table tb(code varchar(10),[user] varchar(10))

insert into tb values('J0012',   '张三') 

insert into tb values('D0054',   '张三') 

insert into tb values('j0015',   '张三') 

insert into tb values('t0048',   '李四') 

insert into tb values('0048' ,   '王五') 

insert into tb values('T0452',   '张三') 

go



select * from tb 

order by case left(code,1) when 'J' then 1 when 'D' then 2 when 'T' then 3 else 4 end ,

 case [user] when '王五' then 1 when '张三' then 2 when '李四' then 3 else 4 end



drop table tb



/*

code       user       

---------- ---------- 

J0012      张三

j0015      张三

D0054      张三

T0452      张三

t0048      李四

0048       王五



(所影响的行数为 6 行)

*/


这个问题第5个回答:
引用 3 楼 Garnett_KG 的回复:

按编码排:

ORDER BY CASE LEFT(Code,1) WHEN 'J' THEN 1 WHEN 'D' THEN 2 WHEN 'T' THEN 3 ELSE 4 END

按指定用户名排序:

DECLARE @SortKey VARCHAR(30)
SET @SortKey='王五,张三,李四'

ORDER BY CHARINDEX(Code,@SortKey)

这个问题第6个回答:
SQL code



declare @str varchar(100)

select @str='王五,张三,李四'

select * from tb 

order by charindex([user],@str)




这个问题第7个回答:
还有个地方请教下
就是人员
declare @str varchar(100)
select @str='王五,张三,李四'
select * from tb
order by charindex([user],@str)

王五,张三,李四 比如我先把这3位排在前面

其他人员排在他们之后

前3位指定这样排
王五,张三,李四
这个问题第8个回答:
SQL code

create table tb(code varchar(10),[user] varchar(10))

insert into tb values('J0012',   '张三') 

insert into tb values('D0054',   '张三') 

insert into tb values('j0015',   '张三') 

insert into tb values('t0048',   '李四') 

insert into tb values('0048' ,   '王五') 

insert into tb values('T0452',   '张三') 

go



select * from tb 

order by case left(code,1) when 'J' then 1 when 'D' then 2 when 'T' then 3 else 4 end ,

 case [user] when '王五' then 1 when '张三' then 2 when '李四' then 3 else 4 end



drop table tb



/*

code       user       

---------- ---------- 

J0012      张三

j0015      张三

D0054      张三

T0452      张三

t0048      李四

0048       王五



(所影响的行数为 6 行)

*/




这个问题第9个回答:
楼上的 假如我传递的是  王五,张三,李四  变量呢??
这个问题第10个回答:
引用 7 楼 MeChecksV 的回复:
还有个地方请教下
就是人员
declare @str varchar(100)
select @str='王五,张三,李四'
select * from tb
order by charindex([user],@str)

王五,张三,李四 比如我先把这3位排在前面

其他人员排在他们之后

前3位指定这样排
王五,张三,李四


declare @str nvarchar(100)
select @str=N'王五,张三'
select *,charindex([user],@str) from tb
order by case when charindex([user],@str)>0 then charindex([user],@str) else 9999 end

这个问题第11个回答:
引用 10 楼 Garnett_KG 的回复:
引用 7 楼 MeChecksV 的回复:
还有个地方

[1] [2] 下一页  

】【关闭窗口
·上页:
·下页:
相关文章
 
     数据库类教程 - MsSql综合技巧
普通教程SQL Server 2008升级顾问
普通教程迁移 Reporting Services
普通教程SQL Server 2008升级报表服务器
普通教程SQL Server 2008 升级Reporting
普通教程SQL Server 2008示例之奥地利广
普通教程SQL Server 2008 示例之微软IT部
普通教程SQL Server 2008示例之日立咨询
普通教程SQL Server2008示例之CyberSavv
普通教程SQL Server 2008示例之CareGrou
普通教程微软商业智能技术详细解说
普通教程通过数据说明和生成报表整合企业
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部
网站文本地图
版权所有:库库中文 2005-2007 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright © 2005-2008 www.QQGB.com online services. all rights reserved. 蜀ICP备05015578
Template designed by Virus. Optimized for 1024x768 to Firefox,Opera and MS-IE6. Site powered by EQL.
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光