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
--在表中查看有相同单位名称的记录总数
[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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 07:59:31

Sql sever 分组排序的相关文章

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

1.什么是表连接? 答:比如两张表,要获取的信息来自两张表,就需要通过外键的形式进行两张表的连接.最后产后组合信息. 表连接是通过join连接的.表连接说白了就是产生一个大表.表连接也都是用于查询上的,用户查询获得多种信息. 2.什么情况下用到分组? 答:涉及到每个“xxx字段”时,就是典型分组,要用group by xxx字段. 分组时,基本都要显示分组的字段,这样才能区分是哪个被分组的字段有什么数据. 比如从student表中查询每个院系有多少人 mysql> SELECT departme

sql实现分组排序-实例分别获取男女成绩前三名的学生姓名

表scores (name,sex,score),分别获取男女前三名学生姓名. 建立表格: create table scores ( name varchar2(8),sex varchar2(1),score number(3,0)  ) 插入学生成绩 insert into scores(name,sex,score) values ('男A','1',100);  insert into scores(name,sex,score) values ('男B','1',90);  inse

SQL数据分组后取最大值或者取前几个值(按照某一列排序)

今日做项目的时候,项目中遇到需要将数据分组后,分组中的最大值,想了想,不知道怎么做,于是网上查了查,终于找到了思路,经过比较这个查询时目前用时最快的,其实还有别的方法,但是我觉得我们只掌握最快的方法就行 ,好了,不说废话了! 直接上内容吧:以下数据是通过 SELECT [CustomerCaseNo],[PaymentsTime] FROM [BOMSDatabase].[dbo].[BAL_paymentsSwiftInfo] where StoresNo='zq00000034' group

sql实现分组并排序

今天遇到一个sql,分组求和过后排序,就想一句sql实现 开始是这么想的: select re.c, re.d from (select c, max(d) as d from a group by c) re order by re.d desc 总感觉重复啰嗦,就百度了一下下(以为要用having,结果就下面简单一句搞定): select c,max(d) from a group by c order by max(d) desc 资料来源

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

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

数据库操作----找了MySQL和SQL Sever两个的基础语句

这是MySQL的基本操作: 1 登入数据库:mysql -uroot -p+密码 (SQL Sever登入: osql -U 用户名 -P 密码) 2 显示已存在的数据库:show databases; 3 使用某个数据库:use+数据库名; 4 显示某个数据库下已存在的关系表:show tables; 5 6 查看某个关系表所有数据:select * from tableName; 7 查看某个关系表部分字段数据:select 字段1,字段2,...,字段n from tableName; 8

MYSQL-实现ORACLE 和SQLserver数据中- row_number() over(partition by ) 分组排序功能

网上看见了好多例子都基本上是一样的,没有过多的解释,对于一个初学MySQL来说有点难,我把部分转摘过来如下 原文:http://www.cnblogs.com/buro79xxd/archive/2012/08/29/2662489.html 要求目标:1.确定需求: 根据部门来分组,显示各员工在部门里按薪水排名名次. 创建表格:2.来创建实例数据: drop table if exists heyf_t10; create table heyf_t10 (empid int ,deptid i

SQL Server 分组后取Top N

SQL Server 分组后取Top N(转) 近日,工作中突遇一需求:将一数据表分组,而后取出每组内按一定规则排列的前N条数据.乍想来,这本是寻常查询,无甚难处.可提笔写来,终究是困住了笔者好一会儿.冥思苦想,遍查网络,不曾想这竟然是SQL界的一个经典话题.今日将我得来的若干方法列出,抛砖引玉,以期与众位探讨. 正文之前,对示例表结构加以说明. 表SectionTransactionLog,用来记录各部门各项活动的日志表 SectionId,部门Id SectionTransactionTyp

【记录】T-SQL 分组排序中取出最新数据

原文:[记录]T-SQL 分组排序中取出最新数据 示例 Product 表结构: 示例 Product 表数据: 想要的效果是,以 GroupName 字段分组,取出分组中通过 Sort 降序最新的数据,通过示例数据,可以推算出结果数据的 ID 应该为:7.5.3. 示例 SQL 代码: select * from Product p where ID=(select top 1 ID from Product where p.GroupName=GroupName order by Sort