Sql sever 分组排序

Posted yangykaifa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sql sever 分组排序相关的知识,希望对你有一定的参考价值。

    维护人事的时候人事局要求加入一个新功能,详细需求例如以下:加入的人员在同一个单位的依照顺序编号而且单位也要实现时间排序,也就是说有两个排序,第一单位名称排序。先创建的一直在前。然后依照创建时间依次排序,第二人员排序。每一个单位的人依照一定的编码进行排序。这里听了师哥的建议採用的是给每一个新加的单位独立编号,比方第一个创建的单位是1,然后依次是234···这样就能非常好的排序啦。这里我针对要操作的表新建了一个触发器。以此来实现这个功能。详细代码与说明例如以下。

--=============================================
--Author:                徐凤竹
-- Create date:2015年7月7日16:10:04
--Description:        插入数据时查看是否存在该单位名称,没有则加入单位名称,实现分组查看
--=============================================
ALTER TRIGGER[dbo].[trg_addoutstanding]
   ON [dbo].[T_OutstandingDispatch]
   AFTER INSERT,UPDATE
AS
declare
@myID varchar(50),
@mycompany varchar(50),
@mygroupid bigint,
@sum bigint,
@maxnum bigint
--在新插入内容中获取档案编号,单位名称
select @myID=number,@mycompany=companyName   frominserted
if update(companyName)
BEGIN
--在表中查看有同样单位名称的记录总数
[email protected]=COUNT(*) from T_OutstandingDispatch where companyName [email protected]
--查询表中最大的组号,以便为新单位编组号
[email protected]=MAX(groupID) from T_OutstandingDispatch
--查询同样单位的组号(存在)。以便为新单位编组号
selecttop 1 @mygroupid=groupID  fromT_OutstandingDispatch where companyName [email protected]
--假设有同样单位名称的记录大于1(排除自身),则给新单位赋予同样组号。否则按序编写新组号
if(@sum>1)
updateT_OutstandingDispatch  [email protected] where number   [email protected]
else
updateT_OutstandingDispatch  [email protected]+1 where number [email protected]
END


 

 

 



以上是关于Sql sever 分组排序的主要内容,如果未能解决你的问题,请参考以下文章

SQL sever 学习,2016,5,31,(重点:100行以后,字符串操作。)

Mysql中ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8怎么转换为sql sever2008的代码

sql 如何分组排序同时进行

sql 分组内排序

SQL 分组统计并排序

Mysql 分组并排序