It would help if you set up your data with DDL and Insert statements. Additionally, providing the expected output will help us to produce a solution that works for you. Here is some code that might help get you going:DECLARE @Foo TABLE (employee_number INT, [time] DATETIME, in_or_out TINYINT)INSERT @FooSELECT 15, '04-01-2010 08:00', 0UNION ALL SELECT 15, '04-01-2010 12:00', 1UNION ALL SELECT 15, '04-01-2010 13:00', 0UNION ALL SELECT 15, '04-01-2010 16:00', 1UNION ALL SELECT 20, '04-01-2010 07:30', 0UNION ALL SELECT 20, '04-01-2010 16:00', 1UNION ALL SELECT 15, '05-01-2010 08:00', 0UNION ALL SELECT 15, '05-01-2010 16:00', 1;WITH Emp AS( SELECT *, ROW_NUMBER() OVER (PARTITION BY employee_number ORDER BY employee_number, [time], in_or_out) AS RowNum FROM @Foo)SELECT A.employee_number, DATEADD(DAY, DATEDIFF(DAY, 0, A.Time), 0) AS [Day], SUM(DATEDIFF(MINUTE, A.[time], B.[time])) AS WorkingMinutesPerDayFROM Emp AS AINNER JOIN Emp AS B ON A.RowNum + 1 = B.RowNum AND A.in_or_out <> B.in_or_out AND A.in_or_out = 0GROUP BY A.employee_number, DATEADD(DAY, DATEDIFF(DAY, 0, A.Time), 0)