Hi @ahmed salah
Please check the query below:
DECLARE @sql VARCHAR(MAX)
DECLARE @Orignal_Columns VARCHAR(MAX)
DECLARE @Recomend_Columns VARCHAR(MAX)
DECLARE @All_Columns VARCHAR(MAX)
SELECT @Orignal_Columns=ISNULL(@Orignal_Columns+',','')+QUOTENAME(FeatureName)
FROM #partsrecomendation P JOIN #TechnologyPlPartsFeaturValues T ON P.OrignalPartId=T.PartID
GROUP BY FeatureName
--PRINT @Orignal_Columns
SELECT @Recomend_Columns=ISNULL(@Recomend_Columns+',','')+QUOTENAME(FeatureName)
FROM #partsrecomendation P JOIN #TechnologyPlPartsFeaturValues T ON P.RecomendationPartId=T.PartID
GROUP BY FeatureName
--PRINT @Recomend_Columns
SELECT @All_Columns=ISNULL(@All_Columns+',','')+QUOTENAME(FeatureName)
FROM #TechnologyPlPartsFeaturValues
GROUP BY FeatureID,FeatureName
ORDER BY FeatureID
--PRINT @All_Columns
SET @sql=N'
;WITH Orignal AS
(
SELECT * FROM (SELECT OrignalPartId,[FeatureName], [FeatureValue]
FROM #partsrecomendation P JOIN #TechnologyPlPartsFeaturValues T ON P.OrignalPartId=T.PartID)O
PIVOT(MAX(FeatureValue)FOR FeatureName IN('+@Orignal_Columns+'))P
),Recomend AS
(
SELECT * FROM (SELECT RecomendationPartId,[FeatureName], [FeatureValue]
FROM #partsrecomendation P JOIN #TechnologyPlPartsFeaturValues T ON P.RecomendationPartId=T.PartID)R
PIVOT(MAX(FeatureValue)FOR FeatureName IN('+@Recomend_Columns+'))P
)
SELECT P.*,'+@All_Columns+'
FROM #partsrecomendation P JOIN Orignal O ON P.OrignalPartId=O.OrignalPartId
JOIN Recomend R ON P.RecomendationPartId=R.RecomendationPartId
'
EXEC (@sql)
Output:
This output is a little bit different from your results, but I think it is caused by the insert datas, as I commented above.
Best regards,
LiHong