首页 > 代码库 > Sql sever 分组排序
Sql sever 分组排序
维护人事的时候人事局要求加入一个新功能,详细需求例如以下:加入的人员在同一个单位的依照顺序编号而且单位也要实现时间排序,也就是说有两个排序,第一单位名称排序。先创建的一直在前。然后依照创建时间依次排序,第二人员排序。每一个单位的人依照一定的编码进行排序。这里听了师哥的建议採用的是给每一个新加的单位独立编号,比方第一个创建的单位是1,然后依次是2、3、4···这样就能非常好的排序啦。这里我针对要操作的表新建了一个触发器。以此来实现这个功能。详细代码与说明例如以下。
--============================================= --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 --在表中查看有同样单位名称的记录总数 select@sum=COUNT(*) from T_OutstandingDispatch where companyName =@mycompany --查询表中最大的组号,以便为新单位编组号 select@maxnum=MAX(groupID) from T_OutstandingDispatch --查询同样单位的组号(存在)。以便为新单位编组号 selecttop 1 @mygroupid=groupID fromT_OutstandingDispatch where companyName =@mycompany --假设有同样单位名称的记录大于1(排除自身),则给新单位赋予同样组号。否则按序编写新组号 if(@sum>1) updateT_OutstandingDispatch setgroupID=@mygroupid where number =@myID else updateT_OutstandingDispatch setgroupID=@maxnum+1 where number =@myID END
Sql sever 分组排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。