从sql中的多行中选择一行取决于条件

时间:2012-06-27 11:48:00

标签: sql sql-server sql-server-2008

我在sql 2008中有一个名为tblEmployeeAttendance的表 enter image description here

以下是员工一天出勤的虚拟数据,如

enter image description here

这里AI指的是AttendanceIn,AO指的是AttendanceOut,BO指的是BreakIn,BI指的是BreakOut。员工每天可以有多行。第一行应该是AI,最后一行应该是AO而其他行应该是BreakIn,BreakOut顺序(意味着BreakIn-BreakOut-BreakIn .....)。

我的预期输出将是这样的

enter image description here

我需要一个sql查询,它将在每个日期返回一行并返回必须在strRemark(AI& AO)上包含AttendanceIn和AttendanceOut Time depands的数据。请帮帮我。

1 个答案:

答案 0 :(得分:2)

SELECT 
 intEmployeeeId,
 dteAttendanceDate as 'Attendance Date'
 min(dteAttendanceTime) as 'Attendance In'
 max(dteAttendanceTime) as 'Attendance Out'
FROM
 tblEmployeeAttendance
GROUP BY
 intEmployeeeId,
 dteAttendanceDate

您可能不需要AI和AO检查,因为时间总是在当天的两端。