我有一段代码,它是一个完美运行的存储过程,它动态地从普通表生成一个交叉的fieds表:
DECLARE @query VARCHAR(MAX)
DECLARE @years VARCHAR(MAX)
SELECT @years = STUFF(( SELECT DISTINCT
'],[' + [Dimension Code]
FROM MTH_ITNWF710.dbo.[Dimension Set Entry]
FOR XML PATH('')
), 1, 2, '') + ']'
SET @query =
'SELECT * FROM
(
SELECT [Dimension Set ID],[Dimension Code],[Dimension Value Code]
FROM MTH_ITNWF710.dbo.[Dimension Set Entry]
)t
PIVOT (max([Dimension Value Code]) FOR [Dimension Code]
IN ('+@years+')) AS pvt'
EXECUTE (@query)
我的理解是,无法基于如上所述的动态存储过程创建实时VIEW,因此我想将上面的SP转换为嵌套查询,如下所示,以便能够创建视图基于嵌套查询而不是SP:
SELECT * FROM
(
SELECT [Dimension Set ID],[Dimension Code],[Dimension Value Code]
FROM MTH_ITNWF710.dbo.[Dimension Set Entry]
)t
PIVOT (max([Dimension Value Code]) FOR [Dimension Code]
IN (
SELECT STUFF(( SELECT DISTINCT
'],[' + [Dimension Code]
FROM MTH_ITNWF710.dbo.[Dimension Set Entry]
FOR XML PATH('')
), 1, 2, '') + ']'
)) AS pvt
但这不起作用总是说SELECT语句附近有错误。我怀疑SELECT STUFF ...语句被错误地报告为嵌套在第一个SELECT中。
有什么想法吗?
非常感谢提前。