如何将多个行合并为一行,而不合并为一个字段?

时间:2020-05-04 21:25:10

标签: pivot dynamic-sql

以下查询使用枢轴将[expireDate Year-Month]字段转换为列,同时根据需要动态创建尽可能多的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

问题在于它在单独的行上而不是在一行中输出每个车辆/年月的检查结果,从而为每个车辆/年月组合创建一行。

Same vehicle with inspect result for each year-month lists on separate row

每辆车应排成一行,其所有检查结果都在同一行上。有什么方法可以将每辆车的检查结果合并为一行?

0 个答案:

没有答案
相关问题