2012-06-14 2 views
0

Может ли кто-нибудь помочь мне с синтаксической ошибкой таблицы PIVOT, поскольку я использую это в первый раз.Ошибка синтаксиса SQL Server на PIVOT

DECLARE @sql AS varchar(max)<br/> 
DECLARE @pivot_list AS varchar(max) <br/> 
DECLARE @select_list AS varchar(max) <br/> 

SELECT @pivot_list = COALESCE(@pivot_list + ', ', '') + '[' + CONVERT(varchar, STATE_NAME) + ']'<br/> 
     ,@select_list = COALESCE(@select_list + ', ', '') + '[' + CONVERT(varchar, STATE_NAME) + '] AS [' + CONVERT(varchar, STATE_NAME) + ']' 
FROM (
SELECT DISTINCT name as STATE_NAME 
    FROM k12_dms_states 
) AS PIVOT_CODES 

SET @sql = ' 
SELECT COUNT(k12_dms_contacts_institution_jobtitles.id) as total_count 
,k12_dms_job_titles.title as job_title,' + @select_list + ' 
FROM k12_dms_institution_master 
INNER JOIN k12_dms_contacts_institution_jobtitles ON k12_dms_institution_master.id = k12_dms_contacts_institution_jobtitles.inst_id 
INNER JOIN k12_dms_job_titles ON k12_dms_job_titles.id = k12_dms_contacts_institution_jobtitles.job_title_id 
GROUP BY k12_dms_job_titles.title 
PIVOT (
total_count 
FOR STATE_NAME IN (
    ' + @pivot_list + ' 
) 
) AS pvt 
' 

    PRINT @sql 

    EXEC (@sql) 

Я получаю эту ошибку: -

Msg 156, Level 15, State 1, Line 8
Incorrect syntax near the keyword 'PIVOT'.

ответ

1

PIVOT принадлежит в FROM clause. Это должно произойти перед любым предложением GROUP BY.

(далее редактирует на основе комментариев, чтобы попытаться исправить):

SET @sql = ' 
SELECT 
k12_dms_job_titles.title as job_title,' + @select_list + ' 
FROM k12_dms_institution_master 
INNER JOIN k12_dms_contacts_institution_jobtitles ON k12_dms_institution_master.id = k12_dms_contacts_institution_jobtitles.inst_id 
INNER JOIN k12_dms_job_titles ON k12_dms_job_titles.id = k12_dms_contacts_institution_jobtitles.job_title_id 
PIVOT (
COUNT(k12_dms_contacts_institution_jobtitles.id) 
FOR STATE_NAME IN (
    ' + @pivot_list + ' 
) 
) AS pvt 
' 
+0

На самом деле я хотел бы получить количество названий Job в state.That поэтому я добавил группу by.Please проконсультировать. – user1163513

+0

Большое спасибо за вашу помощь, но я получаю эту ошибку после использования вышеуказанного запроса. Неправильный синтаксис рядом с ключевым словом «FOR». – user1163513

+0

@ user1163513 - поэтому предложение 'PIVOT' определяется вокруг агрегатной функции. Попробуйте удалить 'COUNT' из вашего предложения' SELECT' и 'GROUP BY' и помещая' COUNT (k12_dms_contacts_institution_jobtitles.id) ', где вы в настоящее время имеете' total_count' в своем 'PIVOT'. –