我写了下面提到的查询......
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(Name)
from dbo.[WorkflowInstanceParameter]
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'')
Go
set @query = 'SELECT ' + @cols + '
from
(
select wi.Id,wip.Name, wip.stringValue
from FROM [ESP2_DEV1].[dbo].[WorkflowInstanceParameter] wip,
[WorkflowParameterGroupInstance] wpgi, [ESP2_DEV1].[dbo].[WorkflowInstance] wi,
dbo.WorkflowDefinition wd
where wip.[WorkflowParameterGroupInstanceId] = wpgi.id
and wpgi.[WorkflowInstanceId] =wi.id and
wi.workflowDefinitionId=wd.id
) x
pivot
(
max(stringValue)
for Name in (' + @cols + ')
) p '
execute(@query)
但它失败了,错误"关键字' FOR'"
附近的语法不正确任何人都可以帮我这个?????
答案 0 :(得分:4)
对于这篇文章来说,这不是一个真正的答案,但是如果你把这个错误归结为其中一个最热门的点击。
我遇到了这个问题,因为我试图用@
命名游标declare @someName cursor for
这不起作用。
你需要这样做:
declare someName cursor for
代替。
我不清楚是否总是如此,因为我在网上看到很多使用@和大量的例子,这些都不会引起混淆。我是sqlserver的新手,所以不确定这里是否有微妙的内容。然而,这肯定修复了我的错误。这一点似乎没有在网上记录多少,但this other question记录了它,但由于某种原因在谷歌上找到更难!
有趣的事情迫使名字!我将oracle架构转换为sqlserver并且必须将@添加到各处的变量,但显然不是这些变量!我猜那些做游标的人都错过了那次会议!
答案 1 :(得分:2)
关键字FROM在set @query子句中重复:
select wi.Id,wip.Name, wip.stringValue
from FROM [ESP2_DEV1].[dbo].[WorkflowInstanceParameter] wip