Есть ли способ динамически создавать таблицы, не зная заранее, сколько столбцов будет в таблице? - PullRequest
0 голосов
/ 06 мая 2020

В следующем запросе используется точка поворота для преобразования значений в поле [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
...