2013-05-29 5 views
1

다음 쿼리에서 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) 
+0

어떤 오류? 나는 그것이 int 일 때 + Convert (VarChar (8), @ formid)가 될 것으로 예상 했었지만 다른 것보다 내가 잘못한 것을 보지 않았다. –

답변

0

변환을,

CAST(@formid AS VARCHAR(25)) 
+0

물론 - 고맙습니다. – tintyethan

+0

당신은 ':)'' –

관련 문제