sql-server - 在“as”附近出现动态枢轴错误
问题描述
你好我需要帮助我不知道错误在哪里
消息 156,级别 15,状态 1,第 15 行 关键字“as”附近的语法不正确。
枢
DECLARE @columns nvarchar(max),@columns2 nvarchar(max),
@sql nvarchar(max)
SELECT @columns = (
SELECT DISTINCT ','+QUOTENAME(Pregunta)
FROM Preguntas WHERE IdEncuesta=69
FOR XML PATH('')
)
SELECT @sql = N'
SELECT Respuesta,'+STUFF(@columns,1,1,'')+'
(Select t.Pregunta as Pregunta,
--Error
CASE WHEN r.Respuesta IS NULL THEN ''-'' ELSE r.Respuesta END AS Respuesta,
CASE WHEN op.IdOpcionPregunta IS NULL THEN ''-'' ELSE z.NombreNivel END AS Respuesta,
CASE WHEN r.ValorRespMultiple IS NULL THEN ''-'' ELSE m.NombreOpcion END AS Respuesta,
CASE WHEN r.IdOpcionUnicaPregunta IS NULL THEN ''-'' ELSE u.NombreOpcion END AS Respuesta
FROM Preguntas t
INNER JOIN Participante p ON p.IdEncuesta = t.IdEncuesta
inner join Respuestas r on r.IdPregunta = t.IdPregunta
left join OpcionPregunta op on op.IdOpcionPregunta= r.IdOpcionPregunta
left join OpcionPregunta m on m.IdOpcionPregunta= r.ValorRespMultiple
left join OpcionPregunta u on u.IdOpcionPregunta= r.IdOpcionUnicaPregunta
Left join OpcionesEscala z on z.IdOpcionEscala = r.IdOpcionPregunta
WHERE t.IdEncuesta=69 AND p.EstadoRespuesta =1) as t
PIVOT (
MAX(Respuesta) FOR Pregunta IN ('+STUFF(@columns,1,1,'')+')
) as pvt'
EXEC sp_executesql @sql
解决方案
您缺少FROM
更改列列表(第 3 行):
SELECT @sql = N'
SELECT Respuesta,'+STUFF(@columns,1,1,'')+'
FROM (Select t.Pregunta as Pregunta,
--Error
CASE WHEN r.Respuesta IS NULL THEN ''-'' ELSE r.Respuesta END AS Respuesta,
CASE WHEN op.IdOpcionPregunta IS NULL THEN ''-'' ELSE z.NombreNivel END AS Respuesta,
CASE WHEN r.ValorRespMultiple IS NULL THEN ''-'' ELSE m.NombreOpcion END AS Respuesta,
CASE WHEN r.IdOpcionUnicaPregunta IS NULL THEN ''-'' ELSE u.NombreOpcion END AS Respuesta
FROM Preguntas t
INNER JOIN Participante p ON p.IdEncuesta = t.IdEncuesta
inner join Respuestas r on r.IdPregunta = t.IdPregunta
left join OpcionPregunta op on op.IdOpcionPregunta= r.IdOpcionPregunta
left join OpcionPregunta m on m.IdOpcionPregunta= r.ValorRespMultiple
left join OpcionPregunta u on u.IdOpcionPregunta= r.IdOpcionUnicaPregunta
Left join OpcionesEscala z on z.IdOpcionEscala = r.IdOpcionPregunta
WHERE t.IdEncuesta=69 AND p.EstadoRespuesta =1) as t
PIVOT (
MAX(Respuesta) FOR Pregunta IN ('+STUFF(@columns,1,1,'')+')
) as pvt'
EXEC sp_executesql @sql
推荐阅读
- image - 带有图像路径的vue问题的包裹
- reactjs - Hook 被调用不超过 1 次
- azure-devops - 在 Azure Devops Build Pipeline 中添加 terraform 计划输出作为 PR 注释
- batch-file - 以编程方式获取类似于计算机管理\共享文件夹\打开文件的打开文件信息?(服务器 2012R2)
- javascript - 不能在 Three.JS 中为网格使用材料数组
- python - Python 类和继承。调用超级方法返回错误
- node.js - 我应该安装一个还是两个 ssl 证书?
- bash - 读取 Dockerfile 中的文件路径列表并将每个文件从一个构建阶段复制到另一个构建阶段
- sql-server - 完全外部联接的问题
- javascript - 成功后Ajax加载关闭div