返回首页

您好
我坚持让我的查询
最终结果
这是我的查询:

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 )))

    GROUP BY

			 TS.TimeSheetID,T.TaskID,T.TaskTitle, TS.Status , TSD.TaskStatus	

	

	Order By TaskTitle				 

					END

这是它提供的结果

{C}
使用最大小时列错过一个记录。它应该显示7条记录。我用星期一THA的总和,它赋予的总和,而不是显示两个得分记录。 TaskID,TaskDate,TaskStatus,TimesheetID该记录只有ExternalID是不同的。

回答

评论会员: 时间:2
l