Transposer des données pour créer une table

J'ai une table avec trois colonnes: – name, col1, col2

J'ai besoin de créer une autre table avec col1 comme colonnes et col2 comme valeurs. Quelqu'un peut-il me donner une idée.

C'est la source:

Name col1 col2 details Company Microsoft details Employees 300 details City New York details2 Company Apple details2 Employees 450 details2 City Boston 

J'ai besoin d'une table pour des détails comme celui-ci

 Company Employees City Microsoft 300 NewYork 

Et une autre table pour les détails2 comme ceci:

  Company Employees City Apple 450 Boston 

Vous pouvez convertir les valeurs de votre colonne en colonne de table et les valeurs de colonne en tant que lignes de cette manière

Première approche: – EXEMPLE SQL FIDDLE

 Select MAX(case when col1 = 'Company' then col2 end) Company, MAX(case when col1 = 'Employee' then col2 end) Employee, MAX(case when col1 = 'City' then col2 end) City From test Group By name 

MODIFIER

Deuxième approche: – SQL FIDDLE

 DECLARE @QUERY NVARCHAR(MAX), @Soucecolumn VARCHAR(MAX) SET @Soucecolumn = STUFF((SELECT distinct ',[' + [col1 ] + ']' FROM test FOR XML PATH('')),1,1,'') SET @QUERY = 'SELECT ' + @Soucecolumn + ' FROM test PIVOT (MAX(col2) FOR [col1 ] IN (' + @Soucecolumn + ')) AS pvt' exec sp_executesql @QUERY