请问这个排序怎么做?
我有两列数据
ID name---------------------------------1 03013 02024 03065 09046 09057 04028 1101
ID name---------------------------------3 02021 03014 03065 09046 09057 04028 1101
order by (case when [name] = '0301' then [name] else ltrim(id) end)
[解决办法]
create table tb(ID int,name varchar(10))insert into tb select 1,'0301'insert into tb select 3,'0202'insert into tb select 4,'0306'insert into tb select 5,'0904'insert into tb select 6,'0905'insert into tb select 7,'0402'insert into tb select 8,'1101'goselect * from tb order by (case when id=3 then -id else id end)/*ID name----------- ----------3 02021 03014 03065 09046 09057 04028 1101(7 行受影响)*/godrop table tb
[解决办法]
order by case when name='0301' then 1 else 0 end ,id
[解决办法]
很简单,把name转为数字型,排序就OK了
select id,name from tb order by convert(int,name)
[解决办法]
哦,不好意思,还有0402在,没看清,见笑了
[解决办法]
如果数据多了,是不是0301这行一直就排第二,不会有其它可能?
[解决办法]
create table tb(ID int,name varchar(10))insert into tb select 1,'0301'insert into tb select 3,'0202'insert into tb select 4,'0306'insert into tb select 5,'0904'insert into tb select 6,'0905'insert into tb select 7,'0402'insert into tb select 8,'1101'GOSELECT * FROM TB ORDER BY CASE WHEN NAME='0301' THEN 0 ELSE 1 END ASC,NAME asc
[解决办法]
不是已经搞定了吗,要么就是你需求不明确