I have written an SQL Query that brings the result in below format
ResourceName ProjectName TaskName Timesheet Period ActualWork TimeByDay DayName
Jim Carry Project A Task A 2011-12 40 09/10/2011 Monday
Jim Carry Project A Task A 2011-12 70 09/10/2011 Monday
Jim Carry Project B Task A 2011-12 80 09/12/2011 Tue.
Perth S. Project A Task A 2011-12 35 09/10/2011 Mon.
I want to write the query so that it gives me something like;
ResourceName ProjectName TaskName Timesheet Period Monday Tue
Jim Carry Project A Task A 2011-12 110 80
As you can see that the new columns is created in second query name as Monday, Tuesday and so on. Plus the total is also calculated based on day and hence result of Monday column is 40+70 while of Tuesday is of 80+0.
Below is the query that brings the code snippet 1
DECLARE @startdate DATETIME
DECLARE @enddate DATETIME
SET @startdate='1/1/2011'
SET @enddate='12/31/2011'
SELECT TOP 100 [IR.TimesheetProjectHoursByDay].ResourceName,
[IR.TimesheetProjectHoursByDay].ProjectName,
[IR.TimesheetProjectHoursByDay].TaskName,
[IR.TimesheetProjectHoursByDay].PeriodName + ' ' + '(' + CONVERT(NVARCHAR, [IR.TimesheetProjectHoursByDay].PeriodStartDate, 101) + ' - ' + CONVERT(NVARCHAR, [IR.TimesheetProjectHoursByDay].PeriodEndDate, 101) + ')' AS [Timesheet Period],
[IR.TimesheetProjectHoursByDay].ActualWork,
[IR.TimesheetProjectHoursByDay].TimeByDay,
DATENAME(dw,TimeByDay) as [DayName]
FROM [IR.TimesheetProjectHoursByDay]
WHERE [IR.TimesheetProjectHoursByDay].TimeByDay >= @StartDate
AND [IR.TimesheetProjectHoursByDay].TimeByDay <= @EndDate
AND [IR.TimesheetProjectHoursByDay].[Project Departments] LIKE N'CSENG'
AND [IR.TimesheetProjectHoursByDay].ActualWork > 0
AND [IR.TimesheetProjectHoursByDay].ResourceName LIKE '%Jim%'
GROUP BY [IR.TimesheetProjectHoursByDay].TimeByDay,
[IR.TimesheetProjectHoursByDay].ResourceName,
[IR.TimesheetProjectHoursByDay].ProjectName,
[IR.TimesheetProjectHoursByDay].TaskName,
[IR.TimesheetProjectHoursByDay].[Project Departments],
[IR.TimesheetProjectHoursByDay].ResourceStandardRate,
[IR.TimesheetProjectHoursByDay].PeriodName,
[IR.TimesheetProjectHoursByDay].PeriodStartDate,
[IR.TimesheetProjectHoursByDay].PeriodEndDate,
[IR.TimesheetProjectHoursByDay].ActualWork
ORDER BY [IR.TimesheetProjectHoursByDay].TimeByDay DESC
Can you please suggest me what change i need to do in the SQL Query so that i can get the result as mentioned in code snippet 2?
Let me know for any inputs required. Please find test data sheet that make things look more clear at here
Please guide!
Thanks!
If I understand you correct you can try this:
You can also use PIVOT as CJM suggested.