Abh*_*786 2 sql t-sql sql-server
我已经写了下面提到的查询......
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)
Run Code Online (Sandbox Code Playgroud)
但它失败并出现错误“关键字‘FOR’附近的语法不正确”
谁能帮我这个吗????
这并不是这篇文章的真正答案,但如果你用谷歌搜索这个错误,它是最热门的错误之一。
我遇到了这个问题,因为我试图用 @ 命名游标
declare @someName cursor for
Run Code Online (Sandbox Code Playgroud)
这不起作用。
你需要做:
declare someName cursor for
Run Code Online (Sandbox Code Playgroud)
反而。
我不清楚这种情况是否总是如此,因为我在网上看到了大量使用 @ 的示例,而很多则没有使用 @,这令人困惑。我是 sqlserver 的新手,所以不确定这里是否发生了一些微妙的事情。然而,这确实解决了我的情况下的错误。这一点似乎在网上没有太多记录,但是另一个问题记录了它,但由于某种原因在谷歌上更难找到!
有趣的是强行命名!我正在将 Oracle 模式转换为 sqlserver,并且必须将 @ 添加到各处的变量,但显然不是这些变量!我猜那些做光标的人错过了那个会议或者其他什么!
| 归档时间: |
|
| 查看次数: |
11493 次 |
| 最近记录: |