【问题标题】:Dynamic Pivot Query with parameter带参数的动态透视查询
【发布时间】: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


【解决方案1】:

将其转换为字符串,

CAST(@formid AS VARCHAR(25))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 2017-09-10
    相关资源
    最近更新 更多