Click here to Skip to main content
15,910,981 members
Please Sign up or sign in to vote.
3.50/5 (2 votes)
See more:
SQL
EMPID	EMPNAME           logtime	            type
-------------------------------------------------------------------------------
8	Mohan Varma	2013-10-30 09:26:00.000	     IN
8	Mohan Varma	2013-10-30 09:26:00.000	     OUT
8	Mohan Varma	2013-10-30 09:51:00.000	     IN
8	Mohan Varma	2013-10-30 10:08:00.000	     OUT
8	Mohan Varma	2013-10-30 11:48:00.000	     IN
8	Mohan Varma	2013-10-30 11:58:00.000	     OUT
8	Mohan Varma	2013-10-30 12:15:00.000	     IN
8	Mohan Varma	2013-10-30 12:48:00.000	     OUT
8	Mohan Varma	2013-10-30 13:06:00.000	     IN
8	Mohan Varma	2013-10-30 13:19:00.000	     OUT
8	Mohan Varma	2013-10-30 14:03:00.000	     IN
8	Mohan Varma	2013-10-30 15:40:00.000	     OUT
8	Mohan Varma	2013-10-30 15:42:00.000	     IN
8	Mohan Varma	2013-10-30 16:27:00.000	     OUT
8	Mohan Varma	2013-10-30 16:35:00.000	     IN
8	Mohan Varma	2013-10-30 18:26:00.000	     OUT
8	Mohan Varma	2013-10-30 18:30:00.000	     IN
8	Mohan Varma	2013-10-30 18:35:00.000	     OUT

I have to calculate the no of hours that the employee was IN based on this requirement(IN/OUT). Can any one suggest me how to do this.
Posted
Updated 29-Oct-13 23:59pm
v6
Comments
Thanks7872 30-Oct-13 5:33am    
Not at all clear. What you want to do with IN/OUT?
Bhagavan Raju M 30-Oct-13 5:42am    
I have to calculate the no of hours that employee was in the office on a particular day.
What have you tried and where is the problem?
Bhagavan Raju M 30-Oct-13 6:01am    
I have to calculate the no of hours that the employee was IN
What have you tried?

SQL
Declare @Tab Table(EMPID int,EMPNAME varchar(20),logtime    datetime,type char(5))
insert @Tab

Select 8,'Mohan Varma','2013-10-30 09:26:00.000','IN'
Union All Select 8,'Mohan Varma','2013-10-30 09:26:00.000','OUT'
Union All Select 8,'Mohan Varma','2013-10-30 09:51:00.000','IN'
Union All Select 8,'Mohan Varma','2013-10-30 10:08:00.000','OUT'
Union All Select 8,'Mohan Varma','2013-10-30 11:48:00.000','IN'
Union All Select 8,'Mohan Varma','2013-10-30 11:58:00.000','OUT'
Union All Select 8,'Mohan Varma','2013-10-30 12:15:00.000','IN'
Union All Select 8,'Mohan Varma','2013-10-30 12:48:00.000','OUT'
Union All Select 8,'Mohan Varma','2013-10-30 13:06:00.000','IN'
Union All Select 8,'Mohan Varma','2013-10-30 13:19:00.000','OUT'
Union All Select 8,'Mohan Varma','2013-10-30 14:03:00.000','IN'
Union All Select 8,'Mohan Varma','2013-10-30 15:40:00.000','OUT'
Union All Select 8,'Mohan Varma','2013-10-30 15:42:00.000','IN'
Union All Select 8,'Mohan Varma','2013-10-30 16:27:00.000','OUT'
Union All Select 8,'Mohan Varma','2013-10-30 16:35:00.000','IN'
Union All Select 8,'Mohan Varma','2013-10-30 18:26:00.000','OUT'
Union All Select 8,'Mohan Varma','2013-10-30 18:30:00.000','IN'
Union All Select 8,'Mohan Varma','2013-10-30 18:35:00.000','OUT'


Select EmpId,EmpName,LogTime,Rn = ROW_NUMBER() OVER (Order By LogTime) Into #Te1 From @Tab Where type = 'In'

Select EmpId,EmpName,LogTime,Rn = ROW_NUMBER() OVER (Order By LogTime) Into #Te2 From @Tab Where type = 'Out'

Select * From #Te1
Select * From #Te2

Declare @Min int
Set @Min = (Select Sum(DATEDIFF(Minute,TE1.LogTime,TE2.LogTime)) AS Minutes From #te1 AS TE1
inner Join #te2 AS TE2
On TE1.rn = TE2.rn)

SELECT CAST( @Min/60 AS VARCHAR(5))+ ' Hrs' + ':'+ RIGHT('0' + CAST( @Min%60 AS VARCHAR(2)), 2)+' Min' AS 'WorkingTime'

Drop Table #TE1
Drop Table #TE2
 
Share this answer
 
Try this:
SQL
select CAST
(
(SUM (datepart(hh, convert (varchar, logtime, 108))) +(sum(datepart(mi, convert (varchar, logtime, 108)))/60) )AS VARCHAR(2))
+ ':' +
CAST
(sum(datepart(mi, convert (varchar, logtime, 108))) - 60 * (sum(datepart(mi, convert (varchar, logtime, 108)))/60)
 as VARCHAR(2))from tbl_check where type='IN'
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900