Reputation: 1142
I have this SQL:
Select FirstName, LastName, Hours, Case When DatePart(Weekday, Date) = 1
Then Date - 6
Else Date - DatePart(Weekday, Date) + 2
End [WeekOf], IsNull([Week44], 0) as [Week44], IsNull([Week45], 0) as [Week45], IsNull([Week46], 0) as [Week46], IsNull([Week47], 0) as [Week47], IsNull([Week48], 0) as [Week48]
from (
Select FirstName, LastName, Hours, Date, 'Week' +
Case When DatePart(Weekday, Date) = 1
Then Cast(DatePart(ww, Date - 6) as nvarchar(max))
Else Cast(DatePart(ww, Date - DatePart(Weekday, Date) + 2) as nvarchar(max))
End WeekNo
From Entry
Where Date between '11/1/2013' and '11/30/2013'
) alpha
pivot (
sum(Hours)
for WeekNo in ([week44], [week45], [week46], [week47], [week48])
) p
As far as I can see, everything is fine, but I keep getting this error:
Msg 207, Level 16, State 1, Line 1
Invalid column name 'Hours'.
Upvotes: 3
Views: 8621
Reputation: 108
Try this:
Select FirstName
, LastName
, [week44], [week45], [week46], [week47], [week48]
from
(
Select FirstName
, LastName
, Hours
, Date
, 'Week' +
Case
When DatePart(Weekday, Date) = 1 Then Cast(DatePart(ww, Date - 6) as nvarchar(max))
Else Cast(DatePart(ww, Date - DatePart(Weekday, Date) + 2) as nvarchar(max))
End WeekNo
From Entry
Where Date between '11/1/2013' and '11/30/2013'
) alpha
pivot
(
sum(Hours)
for WeekNo in ([week44], [week45], [week46], [week47], [week48])
) p
The deal is that the [Hours] data is now in the [weekXX] column and is no longer a data element available for retrieval.
Upvotes: 1
Reputation: 33381
You can't use aggregated column as non-pivoted column. You can't have Hours as column in your result set. I believe something wrong in the logic.
Upvotes: 5
Reputation: 4717
I believe you just need to wrap keywords [Hours], [Date], [Weekday].
Upvotes: 0