日期:2014-05-18  浏览次数:20418 次

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