维护人事的时候人事局要求加入一个新功能,详细需求例如以下:加入的人员在同一个单位的依照顺序编号而且单位也要实现时间排序,也就是说有两个排序,第一单位名称排序。先创建的一直在前。然后依照创建时间依次排序,第二人员排序。每一个单位的人依照一定的编码进行排序。这里听了师哥的建议採用的是给每一个新加的单位独立编号,比方第一个创建的单位是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 分组排序的更多相关文章

  1. SQL语句分组排序,多表关联排序

    SQL语句分组排序,多表关联排序总结几种常见的方法: 案例一: 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列? 分析:单个表内的多个字段排序,一般可以直接用逗号分割实现. select ...

  2. 一条Sql语句分组排序并且限制显示的数据条数

    如果我想得到这样一个结果集:分组排序,并且每组限定记录集的数量,用一条SQL语句能办到吗? 比如说,我想找出学生期末考试中,每科的前3名,并按成绩排序,只用一条SQL语句,该怎么写? 表[TScore ...

  3. sql sever分组查询和连接查询

    分组查询select 查询信息 from 表名where 条件group by 按照列分组(可多个 ,隔开)order by 排序方式(查询信息如果列名和聚合函数同时出现,要么在聚合函数中出现,要么就 ...

  4. SQL之分组排序取top n

    转自:http://blog.csdn.net/wguangliang/article/details/50167283 要求:按照课程分组,查找每个课程最高的两个成绩. 数据文件如下: 第一列no为 ...

  5. sql server 分组排序

    环境: sql server 2012 语法 select ROW_NUMBER() over(partition BY 分组字段 order by 排序字段),* as rowNums from 表 ...

  6. sql语句分组/排序/计算总数/连接等sql语句书写

    1.什么是表连接? 答:比如两张表,要获取的信息来自两张表,就需要通过外键的形式进行两张表的连接.最后产后组合信息. 表连接是通过join连接的.表连接说白了就是产生一个大表.表连接也都是用于查询上的 ...

  7. mysql分组排序加序号(不用存储过程,就简简单单sql语句哦)

    做前端好长时间了,好久没动sql了.在追一个喜欢的女孩,做测试的,有这么个需求求助与本屌丝,机会难得,开始折腾起来,配置mysql,建库,建表.... 一 建表 CREATE TABLE `my_te ...

  8. SQL分组排序后取每组最新一条数据的另一种思路

    在hibernate框架和mysql.oracle两种数据库兼容的项目中实现查询每个id最新更新的一条数据. 之前工作中一直用的mybatis+oracle数据库这种,一般写这类分组排序取每组最新一条 ...

  9. sql server 中判断分组排序的使用示例

    现在需要查询一组数据,是对一列字段(column01)的数据分范围查询后分组排序: select (case when [column01] >0 AND [column01]<= 500 ...

随机推荐

  1. Linux 之 nano 编辑器的使用

    在Linux操作系统中,有很多的文本编辑器,最为重要的就是vi文本编辑器,下面来介绍一个简单的nano文本编辑器.nano的使用简单,我们可以直接加上文件名就能够打开一个旧文件或新文件,我们可以打开一 ...

  2. js事件 (包含call()方法使用特点)

    1.焦点事件 获取焦点事件onfocus\失去焦点事件onblur 例: oText.onfocus=function(){} 焦点:使浏览器能够区分用户输入的对象,当一个元素有焦点的时候,那么它就可 ...

  3. 条款20:宁以pass-by-reference-to-const替换pass-by-value(Prefer pass-by-reference-to-const to pass-by-value)

    NOTE: 1.尽量以pass-by-reference-to-const 替换pass-by-value.前者通常比较高效,并可避免切割问题(slicing problem). 2.以上规则并不适用 ...

  4. python基础知识12-异常

    几个命令: sudo apt install tree tree 当前目录以树形结构展示出来. tree a 查看a内的所有目录.也可以跟绝对路径. a = input('请输入您的密码') 将用户输 ...

  5. 《C/C++工程师综合练习卷》

    前言 前天拿这个<C/C++工程师综合练习卷>练习了一下,现将错题以及精题分析总结. 错题分析与总结 2 . 下面的程序可以从1-.n中随机等概率的输出m个不重复的数.这里我们假设n远大于 ...

  6. 软件测试人员遇到发现的bug不能重现怎么办?

    软件测试人员遇到发现的bug不能重现怎么办?   刚刚进入测试的童鞋们,想必都遇到过提出的bug,开发要求重现之后,但是在系统上已经重现不了的情况吧. 那么碰到这样的情况,不管开发还是测试都很纠结,开 ...

  7. google的三篇论文

    文章:MapReduce/GFS/BigTable三大技术资料 文章:Google File System(中文翻译) 文章:MapReduce:超大机群上的简单数据处理 文章:Google's Bi ...

  8. xftp向ubuntu传输文件错误

    xftp向ubuntu传输文件错误原因: 登陆用户对文件夹没有权限. 解决方法:授予权限 chmod 777 该目录名

  9. 次最短路径 POJ 3255 Roadblocks

    http://poj.org/problem?id=3255 这道题还是有点难度 要对最短路径的算法非常的了解 明晰 那么做适当的修改 就可以 关键之处 次短的路径: 设u 到 v的边权重为cost ...

  10. 动态规划:HDU1087Super Jumping! Jumping! Jumping!(最大上升和)

    Problem Description Nowadays, a kind of chess game called “Super Jumping! Jumping! Jumping!” is very ...