【发布时间】:2013-05-29 13:09:46
【问题描述】:
在以下查询中,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,但除此之外,我没有看到你所做的任何问题。
标签: sql dynamic-pivot