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

sql考勤原始数据统计

2012-04-15 
求助sql考勤原始数据统计表结构为姓名登记号码日期时间张三10262010-3-22 15:24:35张三10262010-3-22 17:5

求助sql考勤原始数据统计
表结构为
姓名登记号码日期时间
张三10262010-3-22 15:24:35
张三10262010-3-22 17:51:57
张三10262010-3-26 12:39:59
张三10262010-3-26 16:04:44
张三10262010-4-9 11:39:28
张三10262010-4-9 15:20:37
张三10262010-4-9 16:27:53
张三10262010-4-9 17:33:04
张三10262010-4-9 17:54:12
李四30012010-3-22 9:09:59
李四30012010-3-22 19:03:08
李四30012010-3-23 10:59:07
李四30012010-3-23 18:40:39
李四30012010-3-24 9:02:29
李四30012010-3-24 19:36:23
李四30012010-3-24 19:44:31
李四30012010-3-26 9:27:00
李四30012010-3-26 19:35:12
李四30012010-3-29 9:20:58
李四30012010-3-29 18:06:23
王五30052010-3-21 12:14:08
王五30052010-3-22 11:57:42
王五30052010-3-22 19:51:41
王五30052010-3-22 21:30:17
王五30052010-3-23 17:43:09
王五30052010-3-23 20:30:38

现在想将它变成 这种模式

姓名 登记号码 日期 打卡记录
张三 1026 2010-3-22 15:24:35 17:51:57
张三 1026 2010-3-26 12:39:59 16:04:44
张三 1026 2010-4-9 11:39:28 15:20:37 16:27:53 17:33:04 17:54:12
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

[解决办法]
上面的错了

SQL code
create table #test1(姓名 varchar(10),登记号码 int,日期时间 datetime)insert #test1 select '张三', 1026 ,'2010-3-22 15:24:35'insert #test1 select '张三', 1026 ,'2010-3-22 17:51:57'insert #test1 select '张三', 1026 ,'2010-3-26 12:39:59'insert #test1 select '张三', 1026 ,'2010-3-26 16:04:44'insert #test1 select '张三', 1026 ,'2010-4-9 11:39:28'insert #test1 select '张三', 1026 ,'2010-4-9 15:20:37'insert #test1 select '张三', 1026 ,'2010-4-9 16:27:53'insert #test1 select '张三', 1026 ,'2010-4-9 17:33:04'insert #test1 select '张三', 1026 ,'2010-4-9 17:54:12'insert #test1 select '李四', 3001 ,'2010-3-22 9:09:59'insert #test1 select '李四', 3001 ,'2010-3-22 19:03:08'insert #test1 select '李四', 3001 ,'2010-3-23 10:59:07'insert #test1 select '李四', 3001 ,'2010-3-23 18:40:39'insert #test1 select '李四', 3001 ,'2010-3-24 9:02:29'insert #test1 select '李四', 3001 ,'2010-3-24 19:36:23'insert #test1 select '李四', 3001 ,'2010-3-24 19:44:31'insert #test1 select '李四', 3001 ,'2010-3-26 9:27:00'insert #test1 select '李四', 3001 ,'2010-3-26 19:35:12'insert #test1 select '李四', 3001 ,'2010-3-29 9:20:58'insert #test1 select '李四', 3001 ,'2010-3-29 18:06:23'insert #test1 select '王五', 3005 ,'2010-3-21 12:14:08'insert #test1 select '王五', 3005 ,'2010-3-22 11:57:42'insert #test1 select '王五', 3005 ,'2010-3-22 19:51:41'insert #test1 select '王五', 3005 ,'2010-3-22 21:30:17'insert #test1 select '王五', 3005 ,'2010-3-23 17:43:09'insert #test1 select '王五', 3005 ,'2010-3-23 20:30:38'with tb as(select  姓名,登记号码,convert(char(10),日期时间,120) as 日期,convert(char(8),日期时间,114) as 打卡记录from #test1)  select  姓名,登记号码, 日期,stuff((select ' '+打卡记录 from tb where a.日期=日期 for xml path('')),1,1,'') as 打卡记录from tb agroup by 姓名,登记号码, 日期姓名         登记号码        日期         打卡记录---------- ----------- ---------- ---------------------------------李四         3001        2010-03-22 15:24:35 17:51:57 09:09:59 19:03:08 11:57:42 19:51:41 21:30:17李四         3001        2010-03-23 10:59:07 18:40:39 17:43:09 20:30:38李四         3001        2010-03-24 09:02:29 19:36:23 19:44:31李四         3001        2010-03-26 12:39:59 16:04:44 09:27:00 19:35:12李四         3001        2010-03-29 09:20:58 18:06:23王五         3005        2010-03-21 12:14:08王五         3005        2010-03-22 15:24:35 17:51:57 09:09:59 19:03:08 11:57:42 19:51:41 21:30:17王五         3005        2010-03-23 10:59:07 18:40:39 17:43:09 20:30:38张三         1026        2010-03-22 15:24:35 17:51:57 09:09:59 19:03:08 11:57:42 19:51:41 21:30:17张三         1026        2010-03-26 12:39:59 16:04:44 09:27:00 19:35:12张三         1026        2010-04-09 11:39:28 15:20:37 16:27:53 17:33:04 17:54:12(11 行受影响)
------解决方案--------------------


SQL code
select name 姓名,regist_number 登记号码, DATE 日期,LEFT(time_list,LEN(time_list)-1) 打卡记录from (select name ,regist_number, DATE, (select time+'  '                                         from (select name,regist_number,CONVERT(varchar(10),date_time,120) date,                                               CONVERT(varchar(10),date_time,108) time                                               from record) a                                          where a.date=b.date for xml path('') )time_list      from (select name,regist_number,CONVERT(varchar(10),date_time,120) date,            CONVERT(varchar(10),date_time,108) time            from record) b      group by name,regist_number,date) c 

热点排行