Sql sever 分组排序
2024-10-20 07:51:56
维护人事的时候人事局要求加入一个新功能,详细需求例如以下:加入的人员在同一个单位的依照顺序编号而且单位也要实现时间排序,也就是说有两个排序,第一单位名称排序。先创建的一直在前。然后依照创建时间依次排序,第二人员排序。每一个单位的人依照一定的编码进行排序。这里听了师哥的建议採用的是给每一个新加的单位独立编号,比方第一个创建的单位是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
最新文章
- 读书笔记-String
- PHP filesystem attack vectors
- Java垃圾回收小结
- gulp小记(无刷新重载样式)
- poj2287
- ElasticSearch大批量数据入库
- 数据结构栈的java实现
- git日志--log
- selenim之ActionChains(一)
- Java容器:Set
- C语言下double转char*或者std::string,可以精确转换不含多余的0
- 我热爱Coding,但厌恶这个IT互联网
- 使用Freemarker 实现JSP页面的静态化
- 微信获取ticket及生成二维码(临时或永久)
- [BOI2004]Sequence 数字序列(左偏树)
- Marriage is Stable HDU1522 稳定婚姻问题基础
- LeetCode: Generate Parentheses 解题报告
- Python 基础总结
- jquery的ajax-serialize()
- Codeforces Round #324 (Div. 2) Olesya and Rodion 构造