首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请问SQL高手:非固定时间段分类统计查询有关问题 (要求不用游标)

2012-09-04 
请教SQL高手:非固定时间段分类统计查询问题 (要求不用游标)表结构如下:CREATE TABLE #tb1(部门 nvarchar(1

请教SQL高手:非固定时间段分类统计查询问题 (要求不用游标)
表结构如下:
CREATE TABLE #tb1(部门 nvarchar(10), 姓名 nvarchar(10), 打卡时间 datetime,打卡次数 int)
INSERT INTO #tb1
SELECT 'A','jim','2012-01-01 07:17:39',1 UNION ALL

SELECT 'A','jim','2012-01-01 07:20:39',2 UNION ALL

SELECT 'A','jim','2012-01-01 07:55:39',1 UNION ALL

SELECT 'A','tom','2012-01-01 07:59:39',1 UNION ALL

SELECT 'A','tom','2012-01-01 08:15:39',1 UNION ALL

SELECT 'A','jim','2012-01-01 08:20:39',2 UNION ALL

SELECT 'A','jim','2012-01-01 09:55:39',1

想得到结果:
部门 姓名 开始时间 结束时间 打卡次数
A jim 2012-01-01 07:17:39 2012-01-01 07:55:39 4
A tom 2012-01-01 07:59:39 2012-01-01 08:15:39 2  
A jim 2012-01-01 08:20:39 2012-01-01 09:55:39 3
 


[解决办法]
加入自增:id int identity(1,1)

select a.*,isnull((select min(id) from #tb1 where a.姓名<>姓名 and a.id<id),(select max(id) from #tb1)) as ns from #tb1 a;


按NS分组取最大、最小时间即可
[解决办法]
在姓名、ID上建立复合索引试试

热点排行