我想透视"Person_Log"表数据..它的列如下:
EmployeeID-> Foreign key
Log-> DateTime type
Run Code Online (Sandbox Code Playgroud)
"Log"的格式是 "1/22/2013 2:02:34 PM"
我想基于对日志列中的日期检查创建枢轴,然后显示每个日期的时间的最小值和最大值...它是一种出勤报告.所需的列类似于......
EmployeeID, 01-Jan IN, 01-Jan OUT, 02-Jan IN, 02-Jan OUT, 03-Jan IN, 03-Jan OUT.....and so on..
Run Code Online (Sandbox Code Playgroud)
除EmployeeID之外的列应该只包含从"Log"列中提取的时间.对于提取,我使用convert(char(10),Log,101)for Date和convert(char(5),Log,108)for时间提取目的..
我达到一天的最好成绩是:
SELECT dbo.DoorLog.EmployeeID,
CONVERT(char(10),
MIN(dbo.DoorLog.DateTime), 101) AS Date,
CONVERT(char(8), MIN(dbo.DoorLog.DateTime), 108) AS INTime,
CONVERT(char(8), MAX(dbo.DoorLog.DateTime), 108) AS OUTTime,
dbo.Person.Name, dbo.Person.Department, dbo.Person.Sex,
dbo.Person.WorkUnit,
dbo.Person.Position
FROM dbo.DoorLog
INNER JOIN dbo.Person ON dbo.DoorLog.EmployeeID = dbo.Person.EmployeeID
GROUP BY CONVERT(char(10), dbo.DoorLog.DateTime, 101),
dbo.DoorLog.EmployeeID, dbo.Person.Name, dbo.Person.Department,
dbo.Person.Sex, dbo.Person.WorkUnit, dbo.Person.Position;
Run Code Online (Sandbox Code Playgroud)
请回复,因为我在两天的截止日期前运行..提前致谢
正如你问的......样本数据..
Log EmployeeID
2013/01/31 12:31 11
2013/01/25 …Run Code Online (Sandbox Code Playgroud)