问题是这样的,我有个表record记录着每个人的每天的打卡记录信息,一天一般打两次,当然有的人打一次卡也有的没打
这个表的格式是这样的
姓名 记录号 时间
xx 1 2011-9-15 23:09:43
xx 1 2011-9-15 20:10:06
zz 2 2011-9-13 13:10:35
yy 3 2011-9-13 22:11:10
我现在想实现这样的结果
时间1 姓名 记录号 时间 次数
2011-9-15 xx 1 2011-9-15 23:09:43/2011-9-15 20:10:06(可以其他格式,只要能看到两个具体的时间) 2
2011-9-13 zz 2 2011-9-13 13:10:35 1
2011-9-13 yy 3 2011-9-13 22:11:10 1
要怎么实现,跪谢了,请各位大侠帮忙
这个表的格式是这样的
姓名 记录号 时间
xx 1 2011-9-15 23:09:43
xx 1 2011-9-15 20:10:06
zz 2 2011-9-13 13:10:35
yy 3 2011-9-13 22:11:10
我现在想实现这样的结果
时间1 姓名 记录号 时间 次数
2011-9-15 xx 1 2011-9-15 23:09:43/2011-9-15 20:10:06(可以其他格式,只要能看到两个具体的时间) 2
2011-9-13 zz 2 2011-9-13 13:10:35 1
2011-9-13 yy 3 2011-9-13 22:11:10 1
要怎么实现,跪谢了,请各位大侠帮忙
解决方案 »
- 不用控件实现多文件上传!这里有哪个朋友知道吗?
- GridView分页问题
- 请教关于WEB安装部署的问题!!!!!!!!!
- request.from中的参数值有哪些?
- 想参加。NET培训,各位兄台给点建议吧
- 请问CSDN里面都是用XML 是怎么实现的
- 请各位大虾来说说Reporting services和水晶报表的优劣
- 在修改信息时这样为什么不行?<asp:Button id="button1" runat="server" Text="<%# DataBinder.Eval(Container.DataItem,"User_Name")%>"
- AutoCompleteExtender 支持中文和开头为0的
- 关于sql优化
- 打开首页会访问数据库多少次
- i_love_you_father怎么输入结果father_you_love_me?
每人每天一条记录,打卡时间直接直接存为特殊符号分隔的字符串格式,不关打卡几次都可以存下来。当然,还应该加一个日期字段,记录是哪天的打卡信息,便于SQL查找。
create table TB
(
Name nvarchar(20),
ID int,
CreateTime datetime
)
GO
insert into TB
SELECT 'ZZ',2,'2011-09-13 13:20:10' UNION
SELECT 'YY',3,'2011-09-13 22:11:10' UNION
SELECT 'XX',1,'2011-09-15 23:09:43' UNION
SELECT 'XX',1,'2011-09-15 20:32:23' UNION
SELECT 'XX',1,'2011-09-19 04:16:22' UNION
SELECT 'XX',1,'2011-09-19 13:11:23' UNION
SELECT 'ZZ',2,'2011-09-19 16:12:10'
GO
SELECT CONVERT(varchar(10),CreateTime,121),Name,ID,COUNT(1)
,(select Convert(varchar(20),CreateTime,120)+'/' from TB WHERE Name=a.Name and CONVERT(varchar(10),CreateTime,121)= CONVERT(varchar(10),a.CreateTime,121) FOR XML PATH('') ) AS TimeList
from TB a
GROUP BY Name,ID,CONVERT(varchar(10),CreateTime,121)
GO
drop table TB
GO(7 行受影响)
Name ID TimeList
---------- -------------------- ----------- ----------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2011-09-15 XX 1 2 2011-09-15 20:32:23/2011-09-15 23:09:43/
2011-09-19 XX 1 2 2011-09-19 04:16:22/2011-09-19 13:11:23/
2011-09-13 YY 3 1 2011-09-13 22:11:10/
2011-09-13 ZZ 2 1 2011-09-13 13:20:10/
2011-09-19 ZZ 2 1 2011-09-19 16:12:10/(5 行受影响)
(
xm NVARCHAR(50),
recordid NVARCHAR(10),
dt DATETIME
)
INSERT INTO tb
SELECT 'xx',
'1',
'2011-9-15 23:09:43'
UNION ALL
SELECT 'xx',
'1',
'2011-9-15 20:10:06'
UNION ALL
SELECT 'zz',
'2',
'2011-9-13 13:10:35'
UNION ALL
SELECT 'yy',
'3',
'2011-9-13 22:11:10'
UNION ALL
SELECT 'xx',
'1',
'2011-9-14 23:09:43'
UNION ALL
SELECT 'xx',
'1',
'2011-9-14 20:10:06'
SELECT id = ROW_NUMBER() OVER(
PARTITION BY xm,
CONVERT(VARCHAR, dt, 23) ORDER BY GETDATE()
),
*
INTO #tb
FROM tbDECLARE @sql VARCHAR(8000)
SET @sql = ''
SELECT @sql = @sql + ',max(case when id=' + RTRIM(id) + ' then dt end) as [dt'
+ RTRIM(id) + ']'
FROM (
SELECT DISTINCT id
FROM #tb
) APRINT @sql
SELECT @sql = 'select xm' + @sql +
' from #tb group by xm,CONVERT(VARCHAR,dt,23)'EXEC (@sql)
DROP TABLE #tb
DROP TABLE tb