2013-11-22 3 views
1

У меня есть этот 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 

Насколько я понимаю, все это хорошо, но я получаю эту ошибку:

Msg 207, Level 16, State 1, Line 1 
Invalid column name 'Hours'. 
+0

У меня не может быть суммы (часов) в стержне? –

+0

Ненавижу, когда это так просто, я не вижу этого. Вот и все. Отправьте ответ, чтобы я мог дать вам реквизит. –

ответ

4

Вы не можете использовать агрегированный столбец в качестве столбца без поворота. В вашем результирующем наборе нельзя указать количество часов в столбце. Я считаю, что что-то не так в логике.

-1

Я считаю, вам просто нужно обернуть ключевые слова [Hours], [Date], [Weekday].

+0

Нет, это не получилось. –

0

Попробуйте это:

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 

Дело в том, что [часы] данных теперь в колонке [weekXX] и больше не является элементом данных, доступных для поиска.

Смежные вопросы