В следующем запросе используется точка поворота для преобразования значений в поле [expireDate Year-Month] в заголовки столбцов. Поскольку количество месяцев-месяцев регулярно увеличивается и не фиксируется, это делается динамически. Есть ли способ также динамически создать таблицу из выходных данных, не зная заранее, сколько столбцов будет в таблице?
DECLARE @SQLQuery AS NVARCHAR(MAX)
DECLARE @PivotColumns AS NVARCHAR(MAX)
--Get unique values of pivot column
SELECT @PivotColumns= COALESCE(@PivotColumns + ',','') + QUOTENAME([expireDate Year-Month])
FROM (SELECT DISTINCT [expireDate Year-Month] FROM REPORTING_DATA.tableau.vw_vehicleInspDetailsHistMonthlyFinal) AS PivotExample
SELECT @PivotColumns
--Create the dynamic query with all the values for
--pivot column at runtime
SET @SQLQuery =
N'SELECT DISTINCT Vehicle#, ' + @PivotColumns + '
FROM REPORTING_DATA.tableau.vw_vehicleInspDetailsHistMonthlyFinal
PIVOT( MAX(inspectionResult)
FOR [expireDate Year-Month] IN (' + @PivotColumns + '))
AS P
ORDER BY Vehicle# '
SELECT @SQLQuery
--Execute dynamic query
EXEC sp_executesql @SQLQuery