December 14, 2011 at 1:49 am
SELECT
E.EmployeeID,
E.EmpCode AS "Emp. Code",
E.FName AS "Emp. Name",
D.DeptName AS Department,
De.Descriptions As Designation,
CONVERT(VARCHAR,SP.InTime,103) AS ShiftDate,
S.Descriptions AS Shift,
RIGHT(CONVERT(VARCHAR,S.InTime,100),7) +' - ' + RIGHT(CONVERT(VARCHAR,S.OutTime,100),7) AS ShiftTime,
ISNULL(RIGHT(CONVERT(VARCHAR,SP.InTime,100),7),'00:00') + ' - ' + ISNULL(RIGHT(CONVERT(VARCHAR,SP.OutTime,100),7),'00:00')AS InOut,
CASE WHEN SP.ShiftID=0 THEN '0:00'
WHEN E.EmployeeID = SP.EmployeeID AND SP.ShiftID=S.HShiftID AND SP.InTime IS NOT NULL AND
CONVERT(TIME,SP.InTime) > CONVERT(TIME,DATEADD(MI,10,CONVERT(TIME,S.InTime)))THEN
CONVERT(VARCHAR,DATEDIFF("MINUTE",CONVERT(TIME,S.InTime),CONVERT(TIME,SP.InTime))/60) +':'+
CONVERT(VARCHAR,DATEDIFF("MINUTE",CONVERT(TIME,S.InTime),CONVERT(TIME,SP.InTime))%60)
ELSE'-' END AS Late,
CASE WHEN SP.ShiftID=0 THEN '0:00'
WHEN E.EmployeeID = SP.EmployeeID AND SP.ShiftID = S.HShiftID AND SP.OutTime IS NOT NULL AND
CONVERT(TIME,DATEADD(MI,10,CONVERT(TIME,SP.OutTime)))<CONVERT(TIME,S.OutTime) THEN
CONVERT(VARCHAR,DATEDIFF("MINUTE",CONVERT(TIME,S.OutTime),CONVERT(TIME,SP.OutTime))/-60) +':'+
CONVERT(VARCHAR,-(DATEDIFF("MINUTE",CONVERT(TIME,S.OutTime),CONVERT(TIME,SP.OutTime)))%-60)
ELSE'-' END AS EarlyDepature
FROM dbo.HEmployee E
INNER JOIN HShiftPost SP ON SP.EmployeeID = E.EmployeeID AND E.IsRoll = 0
INNER JOIN Department D ON E.DeptID = D.DeptCode
INNER JOIN HShift S ON SP.ShiftID = S.HShiftID
INNER JOIN Designation De ON E.DesignationID = De.DesignationID
INNER JOIN [dbo].[HInstitution] I ON E.InstitutionID = I.InstitutionID
INNER JOIN [dbo].[DesignationCategory] DC ON DC.DesignationCategoryID = De.DesignationCategoryID
WHERE E.Status = 1 AND CONVERT(DATE,SP.InTime) BETWEEN CONVERT(DATE,@FromDate) AND CONVERT(DATE,@ToDate) AND
(CONVERT(TIME,SP.InTime) > CONVERT(TIME,DATEADD(MI,10,CONVERT(TIME,S.InTime))) OR CONVERT(TIME,DATEADD(MI,10,CONVERT(TIME,SP.OutTime)))<CONVERT(TIME,S.OutTime))
AND SP.IsDeleted=0
The Above Query Will Execute 00.01 Sec
But I Have Include the Line
LEFT OUTER JOIN HLeaveRequestLR ON Shift.EmployeeID <> LR.EmployeeID AND LR.LeaveTypeID = 6
AND CONVERT(DATE,LR.FromDate) BETWEEN CONVERT(DATE,@FromDate) AND CONVERT(DATE,@ToDate)
It Take 12 to 15 Min
December 14, 2011 at 1:51 am
Please post table definitions, index definitions and execution plan, as per http://www.sqlservercentral.com/articles/SQLServerCentral/66909/
Gail Shaw
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability
December 14, 2011 at 2:21 am
Please don't crosspost. It wastes people's time and fragments replies.
Original thread with replies can be found here:
http://www.sqlservercentral.com/Forums/Topic1221436-391-1.aspx
Need an answer? No, you need a question
My blog at https://sqlkover.com.
MCSE Business Intelligence - Microsoft Data Platform MVP
Viewing 3 posts - 1 through 3 (of 3 total)
You must be logged in to reply to this topic. Login to reply