Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Pivot表错误使用变量给出语法错误_Sql_Syntax_Pivot - Fatal编程技术网

SQL Pivot表错误使用变量给出语法错误

SQL Pivot表错误使用变量给出语法错误,sql,syntax,pivot,Sql,Syntax,Pivot,嗨,我的同事带着这个错误来找我,现在我被迷住了,并试图找出它,希望一些专家能帮助我们! 非常感谢! 当我执行步骤6时,我们得到以下错误: Msg 102, Level 15, State 1, Line 4 Incorrect syntax near '@cols'. 不幸的是,您需要动态SQL来实现这一点 declare @dyn nvarchar(max) set @dyn = 'SELECT * FROM (SELECT * FROM Product) p PIVOT (SUM(QTY

嗨,我的同事带着这个错误来找我,现在我被迷住了,并试图找出它,希望一些专家能帮助我们! 非常感谢! 当我执行步骤6时,我们得到以下错误:

Msg 102, Level 15, State 1, Line 4
Incorrect syntax near '@cols'.


不幸的是,您需要动态SQL来实现这一点

declare @dyn nvarchar(max)
set @dyn = 'SELECT *
FROM (SELECT *
FROM Product) p
PIVOT (SUM(QTY) FOR CUST IN ('  +  @cols +')) as pvt
Order by Product
'
exec sp_executesql @dyn

@马丁·史密斯将是对的……当你遇到下一个错误时。:-)

至于@cols附近的错误,我认为您可以将整个内容用括号括起来。例如:

select @cols = (
                   STUFF(( SELECT DISTINCT TOP 100 PERCENT
                                '],[' + b.Cust
                           FROM    (select top 100 Cust
                                    from tblProduct)b
                           ORDER BY '],[' + b.Cust
                           FOR XML PATH('')
                        ), 1, 2, '') + ']'
               )

+1用于发布有用的DDL+1是的!我同意马丁的观点!
select @cols = (
                   STUFF(( SELECT DISTINCT TOP 100 PERCENT
                                '],[' + b.Cust
                           FROM    (select top 100 Cust
                                    from tblProduct)b
                           ORDER BY '],[' + b.Cust
                           FOR XML PATH('')
                        ), 1, 2, '') + ']'
               )