Синтаксическая ошибка SQL PIVOT в агрегате - PullRequest
2 голосов
/ 07 октября 2011

Я получаю очень неожиданную ошибку, и я не уверен, связано ли это с настройками совместимости или с чем-то глупым. (Я использую SQL Server 2008 R2.) Мой запрос не выполняется для агрегата в сводной области.

Вот полный пример кода.

Отрывок:

select * from @sales
pivot
(
  sum(Amount)
  for Quarter
  in (Q1, Q2, Q3, Q4)
) as p

Неправильный синтаксис в строке sum(Amount)

1 Ответ

1 голос
/ 07 октября 2011

У меня работает для определения таблицы

declare @sales table
(
 [Year] int,
 Quarter char(2),
 Amount float
)

так что предположительно это проблема уровня совместимости. Вы можете сделать

SELECT 
    [Year],
    SUM(CASE WHEN Quarter = 'Q1' THEN Amount END) AS Q1,
    SUM(CASE WHEN Quarter = 'Q2' THEN Amount END) AS Q2,
    SUM(CASE WHEN Quarter = 'Q3' THEN Amount END) AS Q3,
    SUM(CASE WHEN Quarter = 'Q4' THEN Amount END) AS Q4
from @sales   
group by [Year]

Для решения, которое будет работать в режиме совместимости с SQL Server 2000.

...