Hi
I am stuck up in getting final result for my query
This is my query:
ALTER Procedure [dbo].[proc_WeeklyTimeSheet]
@EmpID Varchar(10),
@ProjectID Int,
@StartDate SmallDateTime
AS
BEGIN
DECLARE @strSql Varchar(max)
SELECT
TS.TimeSheetID,T.TaskID,T.TaskTitle,
MAX(Case When DATENAME(dw, TaskDate)='Monday' Then TSD.ExternalID Else '0' End) MondayExtID,
MAX(Case When DATENAME(dw, TaskDate)='Monday' Then TEM.MappedExternalID Else '0' End) MondayExternID,
MAX(Case When DATENAME(dw, TaskDate)='Tuesday' Then TSD.ExternalID Else '0' End) TuesdayExtID,
MAX(Case When DATENAME(dw, TaskDate)='Tuesday' Then TEM.MappedExternalID Else '0' End) TuesdayExternID,
MAX(Case When DATENAME(dw, TaskDate)='Wednesday' Then TSD.ExternalID Else '0' End) WednesdayExtID,
MAX(Case When DATENAME(dw, TaskDate)='Wednesday' Then TEM.MappedExternalID Else '0' End) WednesdayExternID,
MAX(Case When DATENAME(dw, TaskDate)='Thursday' Then TSD.ExternalID Else '0' End) ThursdayExtID,
MAX(Case When DATENAME(dw, TaskDate)='Thursday' Then TEM.MappedExternalID Else '0' End) ThursdayExternID,
MAX(Case When DATENAME(dw, TaskDate)='Friday' Then TSD.ExternalID Else '0' End) FridayExtID,
MAX(Case When DATENAME(dw, TaskDate)='Friday' Then TEM.MappedExternalID Else '0' End) FridayExternID,
MAX(Case When DATENAME(dw, TaskDate)='Saturday' Then TSD.ExternalID Else '0' End) SaturdayExtID,
MAX(Case When DATENAME(dw, TaskDate)='Saturday' Then TEM.MappedExternalID Else '0' End) SaturdayExternID,
MAX(Case When DATENAME(dw, TaskDate)='Sunday' Then TSD.ExternalID Else '0' End) SundayExtID,
MAX(Case When DATENAME(dw, TaskDate)='Sunday' Then TEM.MappedExternalID Else '0' End) SundayExternID,
MAX(Case When DATENAME(dw, TaskDate)='Monday' Then Hours Else 0 End) Monday,
MAX(Case When DATENAME(dw, TaskDate)='Tuesday' Then Hours Else 0 End) Tuesday,
MAX(Case When DATENAME(dw, TaskDate)='Wednesday' Then Hours Else 0 End) Wednesday,
MAX(Case When DATENAME(dw, TaskDate)='Thursday' Then Hours Else 0 End) Thursday,
MAX(Case When DATENAME(dw, TaskDate)='Friday' Then Hours Else 0 End) Friday,
MAX(Case When DATENAME(dw, TaskDate)='Saturday' Then Hours Else 0 End) Saturday,
MAX(Case When DATENAME(dw, TaskDate)='Sunday' Then Hours Else 0 End) Sunday,
SUM(ISNULL(Hours, 0)) AS WeekTotal,
TS.Status,TSD.TaskStatus AS TaskStatus
FROM
Task T left outer Join (TimeSheetDetails TSD Inner Join TimeSheet TS On TS.TimeSheetID=TSD.TimeSheetID and TS.EmployeeID=@EmpID And TS.ProjectID= @ProjectID
And @StartDate Between TS.StartDate And TS.EndDate INNER JOIN Timesheet_ExternalIDMapping TEM ON TEM.ExternalID=TSD.ExternalID )
On T.TaskID=TSD.TaskID INNER JOIN Task_To_Project_Mapping TTPM ON TTPM.TTPM_Task_ID = T.TaskID AND
TTPM.TTPM_Project_ID = @ProjectID
WHERE
T.Status='A' And (( TS.TimeSheetID is Not Null And Exists( Select * from TimeSheet TS1, TimeSheetDetails TS2 where TS1.TimeSheetID=TS2.TimeSheetID AND
TS1.EmployeeID=@EmpID And TS1.ProjectID=@ProjectID And @StartDate Between TS1.StartDate And TS1.EndDate))
Or ( TS.TimeSheetID is Null And Not Exists( Select * from TimeSheet TS1 where TS1.EmployeeID=@EmpID And TS1.ProjectID= @ProjectID
And @StartDate Between TS1.StartDate And TS1.EndDate )))
GROUP BY
TS.TimeSheetID,T.TaskID,T.TaskTitle, TS.Status , TSD.TaskStatus
Order By TaskTitle
END
This is the result it gives
TimesheetID TaskID TaskTitle MondayExt IDMondayExtrnID-------Monday.........
8239 7 1
8239 8 1
8239 2 1
8239 2 1
8239 3 1
8239 3 1
Using Max for hours column miss one record. It should show 7 records. I i use SUM on Monday tha it gives sum rather than showing two diff records. TaskID, TaskDate, TaskStatus,TimesheetID are same for that record only ExternalID is different.