我有一个包含三列的表:- 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
最佳答案
您可以像这样将第一列值转换为表列,将第二列值转换为行
第一种方法:- 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
关于sql - 转置数据以创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30156798/