sql server中的order by子句 [英] order by clause in sql server

查看:89
本文介绍了sql server中的order by子句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述







在我的表中我有一个列STATUS,有这样的记录



ID姓名状态

101 ABCD 1

102 XYZ 2

103 XXX 3

104 DEF 4



i希望以下列格式获得输出



ID NAME STATUS

102 XYZ 2

101 ABCD 1

104 DEF 4

103 XXX 3

解决方案

试试这段代码。将@t替换为您的表名。



 选择 id,NAME ,
case
status = 2 然后 1
status = 1 然后 2
status = 4 3
status = 3 然后 4
end as newstatus
来自 @ t
订单 newstatus


假设你有一个状态t能够包含所有提供的状态。您可以在名为ORDERING_INFO的状态表中添加一列。



  ALTER  状态 ADD  ORDERING_INFO  INT   NULL  

更新状态 SET ORDERING_INFO = 2 WHERE STATUS_ID = 1 ;
更新状态 SET ORDERING_INFO = 1 WHERE STATUS_ID = 2 ;
更新状态 SET ORDERING_INFO = 4 WHERE STATUS_ID = 3 ;
更新状态 SET ORDERING_INFO = 3 WHERE STATUS_ID = 4 ;





然后你可以像这样修改你的选择查询



  SELECT  ID,NAME 
FROM TABLE
INNER JOIN 状态 ON TABLE .STATUS = STATUS.STATUS_ID
ORDER BY 状态。 ORDERING_INFO


hi,


in my table i am having a column STATUS which is having records like this

ID NAME STATUS
101 ABCD 1
102 XYZ 2
103 XXX 3
104 DEF 4

i want to get output in the following format

ID NAME STATUS
102 XYZ 2
101 ABCD 1
104 DEF 4
103 XXX 3

解决方案

Try this code. Replace @t with your table name.

select id,NAME,
case
when status=2 then 1
when status=1 then 2
when status=4 then 3
when status=3 then 4
end as newstatus
from @t
order by newstatus


Assuming you have a status table that contains all the provided status. You can add a column in that status table named ORDERING_INFO.

ALTER TABLE STATUS ADD ORDERING_INFO INT NULL

UPDATE STATUS SET ORDERING_INFO = 2 WHERE STATUS_ID = 1;
UPDATE STATUS SET ORDERING_INFO = 1 WHERE STATUS_ID = 2;
UPDATE STATUS SET ORDERING_INFO = 4 WHERE STATUS_ID = 3;
UPDATE STATUS SET ORDERING_INFO = 3 WHERE STATUS_ID = 4;



You can then modify your select query like this

SELECT ID,NAME
FROM   TABLE 
       INNER JOIN STATUS ON TABLE.STATUS = STATUS.STATUS_ID
ORDER BY STATUS.ORDERING_INFO


这篇关于sql server中的order by子句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆