December 22, 2017 at 11:04 am
I have a list of users who but time in on a daily basis, I want to Sum it er week and have my 52 weeks go across horizontal (one row for user then week1 - week52 in columns with Sum of hours for each week,
EX:
User WK1 WK2 WK3 . . .
Sally 41 45 38 . . .
Joe 52 32 41 . . .
HBelow is what I have to get the data But it is all in two columns
employee week hours
Sa;;y 1 41
Sally 2 45
sally 3 38
Joe 1 52
Joe 2 32
Joe 3 41
select EmployeeID, SUM(TEHours) as Hours, Datepart(wk,TEdate) AS Week from TimeEntry
where TEdate like '%2017%'
Group by EmployeeID , Datepart(wk,TEdate)
Order by EmployeeID, week
I tried to run Pivot but I keep getting a syntax error. I read in another thread that you could not use pivot for three fields.
With the above code I can use a pivot table in excel and get what I need but I really want to run it all in Sql
December 22, 2017 at 11:24 am
hi....please take a look here https://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/
________________________________________________________________
you can lead a user to data....but you cannot make them think
and remember....every day is a school day
December 22, 2017 at 12:54 pm
rick.staples - Friday, December 22, 2017 11:04 AMI have a list of users who but time in on a daily basis, I want to Sum it er week and have my 52 weeks go across horizontal (one row for user then week1 - week52 in columns with Sum of hours for each week,EX:
User WK1 WK2 WK3 . . .
Sally 41 45 38 . . .
Joe 52 32 41 . . .HBelow is what I have to get the data But it is all in two columns
employee week hours
Sa;;y 1 41
Sally 2 45
sally 3 38
Joe 1 52
Joe 2 32
Joe 3 41
select EmployeeID, SUM(TEHours) as Hours, Datepart(wk,TEdate) AS Week from TimeEntry
where TEdate like '%2017%'
Group by EmployeeID , Datepart(wk,TEdate)
Order by EmployeeID, weekI tried to run Pivot but I keep getting a syntax error. I read in another thread that you could not use pivot for three fields.
With the above code I can use a pivot table in excel and get what I need but I really want to run it all in Sql
A pivot will work, because you are only aggregating one field (not three). It will be something like
SELECT EmployeeID, [1] AS Wk1, [2] AS Wk2, ....
FROM
( SELECT EmployeeID, DATEPART(WK, TEDate) AS WK, TEHours FROM TimeEntry)
PIVOT(
SUM(TEHours)
FROM WK in ([1], [2], ....)
That being said, you may want to consider some other option, such as SSRS to produce this report.
Drew
J. Drew Allen
Business Intelligence Analyst
Philadelphia, PA
December 26, 2017 at 7:21 am
drew.allen - Friday, December 22, 2017 12:54 PMrick.staples - Friday, December 22, 2017 11:04 AMI have a list of users who but time in on a daily basis, I want to Sum it er week and have my 52 weeks go across horizontal (one row for user then week1 - week52 in columns with Sum of hours for each week,EX:
User WK1 WK2 WK3 . . .
Sally 41 45 38 . . .
Joe 52 32 41 . . .HBelow is what I have to get the data But it is all in two columns
employee week hours
Sa;;y 1 41
Sally 2 45
sally 3 38
Joe 1 52
Joe 2 32
Joe 3 41
select EmployeeID, SUM(TEHours) as Hours, Datepart(wk,TEdate) AS Week from TimeEntry
where TEdate like '%2017%'
Group by EmployeeID , Datepart(wk,TEdate)
Order by EmployeeID, weekI tried to run Pivot but I keep getting a syntax error. I read in another thread that you could not use pivot for three fields.
With the above code I can use a pivot table in excel and get what I need but I really want to run it all in Sql
A pivot will work, because you are only aggregating one field (not three). It will be something like
SELECT EmployeeID, [1] AS Wk1, [2] AS Wk2, ....
FROM
( SELECT EmployeeID, DATEPART(WK, TEDate) AS WK, TEHours FROM TimeEntry) AS a
PIVOT(
SUM(TEHours)
FOR WK in ([1], [2], ....)
) AS pvtThat being said, you may want to consider some other option, such as SSRS to produce this report.
Drew
Note the spelling change and additional ) with table alias for the pivot.
Steve (aka sgmunson) 🙂 🙂 🙂
Rent Servers for Income (picks and shovels strategy)
December 26, 2017 at 7:35 am
rick.staples - Friday, December 22, 2017 11:04 AMI have a list of users who but time in on a daily basis, I want to Sum it er week and have my 52 weeks go across horizontal (one row for user then week1 - week52 in columns with Sum of hours for each week,EX:
User WK1 WK2 WK3 . . .
Sally 41 45 38 . . .
Joe 52 32 41 . . .HBelow is what I have to get the data But it is all in two columns
employee week hours
Sa;;y 1 41
Sally 2 45
sally 3 38
Joe 1 52
Joe 2 32
Joe 3 41
select EmployeeID, SUM(TEHours) as Hours, Datepart(wk,TEdate) AS Week from TimeEntry
where TEdate like '%2017%'
Group by EmployeeID , Datepart(wk,TEdate)
Order by EmployeeID, weekI tried to run Pivot but I keep getting a syntax error. I read in another thread that you could not use pivot for three fields.
With the above code I can use a pivot table in excel and get what I need but I really want to run it all in Sql
I can take a look at this tonight. It's actually quite easy but to ask a question... do all of these people work for the same department and would it be handy to have subtotals by department along with a grand total row? Ok... so two questions... would it also be handy to have a total column to show the total hours each person worked for the year?
--Jeff Moden
Change is inevitable... Change for the better is not.
Viewing 5 posts - 1 through 4 (of 4 total)
You must be logged in to reply to this topic. Login to reply