您好
我坚持让我的查询
最终结果
这是我的查询:ALTER Procedure [dbo].[proc_WeeklyTimeSheet] --'106',43, '10/17/2011 12:00:00 AM'
@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 )))