小编hum*_*gon的帖子

如何根据Date调整Datetime类型实现检查

我想透视"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)

sql pivot sql-server-2005 unpivot

1
推荐指数
1
解决办法
1565
查看次数

标签 统计

pivot ×1

sql ×1

sql-server-2005 ×1

unpivot ×1