【发布时间】:2020-03-11 15:38:00
【问题描述】:
你好我需要帮助我不知道错误在哪里
消息 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
【问题讨论】:
-
您好,欢迎来到 SO。我看到您正在尝试进行动态支点。调试动态 sql 的方法是在您尝试执行之前打印/选择创建的语句。
-
我怀疑问题在于您的注入柱后面没有
FROM或,。 -
@Larnu 我怀疑这只是问题的一部分。那个子查询的东西看起来也很可疑。
-
我同意,@SeanLange。这只是一些我们不能用来复制问题(或运行)的代码的快速位置。
标签: sql-server pivot case