Я пытался создать Common Table Express (CTE), чтобы хранить некоторые данные, которые мне нужны, для чего требуется куча внутреннего соединения. Затем я хотел бы повернуть результат с помощью динамических столбцов. Я написал запрос ниже, но получаю ошибкуDynamic Pivot with CTE
«Обычное выражение таблицы определено, но не используется».
Как создать опорную базу запросов на CTE? Кстати, я могу сделать это без CTE, но я хотел бы знать, смогу ли я это сделать с CTE.
DECLARE @cols nvarchar(max)
DECLARE @sql nvarchar(max)
SELECT @cols = isnull(@cols + ', ', '') + '[' + Convert(varchar(max),T.CostCenterNumber) + ']' FROM (SELECT distinct CostCenterNumber FROM CostCenters) as T
;With PivotData as (
SELECT B.[Year], C.CostCenterNumber, C.CostCenterName, E.[Description] as GLClass, D.Code, D.[GLDescription], A.Total
From GeneralLedgers A inner join
Years B on A.YearID = B.ID
inner join CostCenters C on
A.CostCenterID = C.ID
inner join GLCodes D on
A.GLCodeID = D.ID inner join
GLClassificationTypes E on
D.GLClassificationTypeID = E.ID)
SELECT @sql = '
Select *
From(
SELECT [Year], CostCenterNumber, GLClass, Code, GLDescription, Total
FROM PivotData) as T
PIVOT
(
Max(Total)
for [CostCenterNumber] in (' + @cols + ')
)) as P'
EXEC(@sql)