我有一个包含三列的表: - name,col1,col2
我需要创建另一个表,其中col1作为列,col2作为值。有人可以给我一个想法。
这是来源:
Name col1 col2
details Company Microsoft
details Employees 300
details City New York
details2 Company Apple
details2 Employees 450
details2 City Boston
我需要一张表来获取这样的详细信息
Company Employees City
Microsoft 300 NewYork
另一个详细信息表2就像这样:
Company Employees City
Apple 450 Boston
答案 0 :(得分:2)
您可以将One Column值转换为Table Column,将Second列值转换为Rows,就像这样
第一种方法: - SAMPLE 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
修改强>
第二种方法: - 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