Результат запроса на основе оператора выбора

У меня есть этот кусок кода, который является хранимой процедурой, которая отлично работает, и она динамически генерирует таблицу перекрещенных файлов из простой таблицы:

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.

Любая идея?

Спасибо заранее.

0 ответов

Другие вопросы по тегам