В следующем запросе параметр formid вызывает ошибку. Я попытался использовать статическое значение вместо параметра formid, и в этом случае запрос будет успешным. Я использую неправильный синтаксис? Этот поток, похоже, решает проблему, но синтаксис кажется таким же.Динамический сводный запрос с параметром
ALTER PROCEDURE [dbo].[customFormReport]
(
@formid int
)
AS
BEGIN
SET NOCOUNT ON
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(fieldname)
from FormResponse
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT FormID, FormSubmissionID,' + @cols + ' from
(
SELECT FormID, FormSubmissionID, fieldname, value
FROM FormResponse WHERE FormID = ' + @formid + '
) x
pivot
(
max(value)
for fieldname in (' + @cols + ')
) p '
execute(@query)
Какую ошибку? Я бы ожидал, что это будет + Convert (VarChar (8), @ formid), поскольку это int, но кроме этого я не вижу ничего плохого в том, что вы сделали. –