sqlserver 用 RowNumber 分组

 1 SELECT RECORD.[RECORD_ID]
 2       ,RECORD.[WORKFLOW_INFO_ID]
 3       ,RECORD.[FORM_CODE]
 4       ,RECORD.[APPLY_DATE]
 5       ,RECORD.[APPLY_EMP_ID]
 6       ,RECORD.[APPLY_EMP_NUMBER]
 7       ,RECORD.[APPLY_EMP_NAME_EN]
 8       ,RECORD.[APPLY_EMP_NAME_CN]
 9       ,RECORD.[APPLY_EMP_EMAIL]
10       ,RECORD.[APPLY_EMP_PHONE]
11       ,RECORD.[APPLY_EMP_MOBILE]
12       ,RECORD.[APPLY_EMP_POSITION_CN]
13       ,RECORD.[APPLY_EMP_POSITION_EN]
14       ,RECORD.[APPLY_EMP_WORK_OFFICE]
15       ,RECORD.[APPLY_EMP_WORK_AREA_CODE]
16       ,RECORD.[APPLY_EMP_DEPT_CODE]
17       ,RECORD.[APPLY_EMP_DEPT_TYPE]
18       ,RECORD.[APPLY_EMP_DEPT_IS_FUNCTIONAL]
19       ,RECORD.[APPLY_EMP_DEPT_NAME_CN]
20       ,RECORD.[APPLY_EMP_DEPT_NAME_EN]
21       ,RECORD.[APPLY_EMP_DEPT_FUNC_CODE]
22       ,RECORD.[APPLY_EMP_DEPT_FUNC_CN]
23       ,RECORD.[APPLY_EMP_DEPT_FUNC_EN]
24       ,RECORD.[FILLER_EMP_ID]
25       ,RECORD.[FILLER_EMP_NUMBER]
26       ,RECORD.[FILLER_EMP_NAME_EN]
27       ,RECORD.[FILLER_EMP_NAME_CN]
28       ,RECORD.[FILLER_EMP_EMAIL]
29       ,RECORD.[FILLER_EMP_PHONE]
30       ,RECORD.[FILLER_EMP_MOBILE]
31       ,RECORD.[FILLER_EMP_POSITION_CN]
32       ,RECORD.[FILLER_EMP_POSITION_EN]
33       ,RECORD.[FILLER_EMP_WORK_OFFICE]
34       ,RECORD.[FILLER_EMP_WORK_AREA_CODE]
35       ,RECORD.[FILLER_EMP_DEPT_CODE]
36       ,RECORD.[FILLER_EMP_DEPT_TYPE]
37       ,RECORD.[FILLER_EMP_DEPT_IS_FUNCTIONAL]
38       ,RECORD.[FILLER_EMP_DEPT_NAME_CN]
39       ,RECORD.[FILLER_EMP_DEPT_NAME_EN]
40       ,RECORD.[FILLER_EMP_DEPT_FUNC_CN]
41       ,RECORD.[FILLER_EMP_DEPT_FUNC_EN]
42       ,RECORD.[FILLER_EMP_DEPT_FUNC_CODE]
43       ,EMP.APPROVE_EMP_ID
44       ,EMP.APPROVE_TYPE
45       ,EMP.EMP_NAME_CN
46       ,EMP.EMP_NAME_EN
47       ,EMP.EMP_NUMBER
48       ,EMP.SOURCE_EMP_NAME_CN
49       ,EMP.SOURCE_EMP_NAME_EN
50       ,EMP.SOURCE_EMP_NUMBER
51       ,Activity.ACTIVITY_NAME --活动名称
52       ,Activity.MEETING_CATEGORY_NAME
53       ,Activity.MEETING_CATEGORY_CODE
54       ,Activity.ACTIVITY_JOIN_NUMBER
55       ,Activity.START_TIME
56       ,Activity.FINISH_TIME
57       ,Activity.FEE
58       ,Activity.[ACTIVITY_REGION_NAME]
59       ,CASE WHEN(EMP.WF_ACTIVITY_NAME IS NULL) THEN
60         (CASE
61          WHEN(RECORD.RECORD_STATUS=0) THEN ‘Draft‘
62          WHEN(RECORD.RECORD_STATUS=2) THEN ‘Completed‘
63          WHEN (RECORD.RECORD_STATUS=4) THEN ‘Circulation‘
64          WHEN (RECORD.RECORD_STATUS=5) THEN ‘Cancelled‘
65          WHEN (RECORD.RECORD_STATUS=7) THEN ‘Suspend‘ ELSE ‘Unknown‘ END)
66         ELSE EMP.WF_ACTIVITY_NAME END AS CURRENT_ACTIVITY_NAME
67   FROM [dbo].[TSTB_COM_MS_ITEM_RECORD] RECORD
68   LEFT JOIN [dbo].FUN_MS_GetActivityInfo()  Activity
69   ON RECORD.RECORD_ID = Activity.RECORD_ID
70   LEFT JOIN
71       (SELECT  * , ROW_NUMBER() OVER (PARTITION BY RECORD_ID ORDER BY CREATE_DATE )   AS RN  FROM  [dbo].[TSTB_COM_ITEM_RECORD_APPROVE_EMP] WHERE STATUS=1 AND APPROVE_TYPE<>2 AND WORKFLOW_PREFIX=‘MS‘)
72       AS EMP   ON RECORD.RECORD_ID=EMP.RECORD_ID AND EMP.RN=1
73   WHERE RECORD.STATUS=1 and RECORD.RECORD_STATUS<>5 
时间: 2024-11-09 00:16:44

sqlserver 用 RowNumber 分组的相关文章

sqlserver 存储过程 递归查询分组+hierarchyid重建会员关系

CREATE PROCEDURE [dbo].[GetGroupInfo] @s_code NVARCHAR(16) = 0 --会员卡号 AS BEGIN declare @p int; --查询唯一性结果 declare @sql nvarchar(1000); --拼接查询sql字串 set @sql='SELECT @p=n_teamlevel FROM t_user_basic WHERE s_code=' +@s_code; exec sp_executesql @sql,N'@p

MySQL数据中分级分组显示数据

前面已经有了SqlServer数据分级分组显示数据了.今天又来做一个MySQL数据库中的分级分组显示,SqlServer中用到了递归,这里为了简单就直接把根的数据显示为0 ,而不用递归了. 在MySQL数据库中创建数据表: CREATE TABLE `categories` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '分类id' , `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_gene

Sql 分页三种方式

create database Test go use Test go create Table UserInfo( userid int identity(1,1) primary key, username nvarchar(10) not null ) insert into UserInfo values ('a11') insert into UserInfo values ('a12') insert into UserInfo values ('a13') insert into

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

SQLServer 分组查询相邻两条记录的时间差

原文:SQLServer 分组查询相邻两条记录的时间差 首先,我们通过数据库中表的两条记录来引出问题,如下图 以上为一个记录操作记录的表数据.OrderID为自增长列,后面依次为操作类型,操作时间,操作人. 现在的问题是:要求筛选出数据库中从“接收”到“送出”的时间差超过2天的全部记录.即如上图两笔单据中,红色框既是要筛选出的,绿色框为正常过滤的. 为了定位相邻记录,方法为给查询语句的返回记录加个自动编号列放入临时表中,再对临时表进行操作. --1.首先查出表中符合條件的所有信息 select

ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY COL2)用法,先分组,然后在组内排名,分组计算等

ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY COL2)用法 今天在使用多字段去重时,由于某些字段有多种可能性,只需根据部分字段进行去重,在网上看到了rownumber() over(partition by col1 order by col2)去重的方法,很不错,在此记录分享下: row_number() OVER ( PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算

Sqlserver中实现oralce 数据库的rownumber

引用自:http://cai555.javaeye.com/blog/466033 方法1: with temp as ( select row_number() over(order by cityID) as rownum,cityName from city ) select * from temp where rownum between 10 and 20 go 解释: 1 此方法把括号里的查询结果放到变量:temp 里面( 我也不确定是不是变量), 并用row_number() 函数

MySQL分组排序取前N条记录以及生成自动数字序列--group by 后 limit 外加 rownumber

同事提了一个需求,要求按照某列分组,然后将各组的前几条抽取出来. 表结构 CREATE TABLE `total_freq_ctrl` ( `time` int(10) unsigned NOT NULL, `machine` char(64) NOT NULL, `module` char(32) NOT NULL, `total_flow` int(10) unsigned NOT NULL, `deny_flow` int(10) unsigned NOT NULL, PRIMARY KE

sql 分组取最新的数据sqlserver巧用row_number和partition by分组取top数据

SQL Server 2005后之后,引入了row_number()函数,row_number()函数的分组排序功能使这种操作变得非常简单 分组取TOP数据是T-SQL中的常用查询, 如学生信息管理系统中取出每个学科前3名的学生.这种查询在SQL Server 2005之前,写起来很繁琐,需要用到临时表关联查询才能取到.SQL Server 2005后之后,引入了row_number()函数,row_number()函数的分组排序功能使这种操作变得非常简单.下面是一个简单示例: --1.创建测试