人员排序 按指定人员 如用户选择 王五,张三,李四 那就按这样的人员排序
这个问题第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个回答: 这个问题第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个回答:
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个回答: