我有一个表,其中有一个样本数据如下所示。
我正试图从上表创建一个透视表,如下所示。
所以基本上我需要将attname列中的“catalogid”移动到一个新列中,并显示其值。(基于uploadguid和equipmentref列值的分组/匹配)
我可以使用给定的脚本实现结果,但我认为这不是有效的方法,如果有人有更好的想法,我会感谢你的帮助。
这是这个的sql小提琴。
BEGIN
CREATE TABLE #temp1
(
uploadguid varchar(50) NULL,
attname varchar(50) NULL,
attvalue varchar(50) NULL,
equipmentRef varchar(50) NULL,
)
Insert Into #temp1
Values (N'651EF',N'Impact',N'0.123459',N'43398E')
,(N'651EF',N'CatalogID',N'12456',N'43398E')
,(N'541EF',N'alpha',N'0.547623',N'43398E')
,(N'541EF',N'CatalogID',N'36592',N'43398E')
,(N'921EF',N'Beta',N'0.44875',N'43398E')
,(N'921EF',N'CatalogID',N'25894',N'43398E')
Select * from #temp1
select a.*,b.DBcatalogID from #temp1 a inner join (SELECT uploadguid,[CatalogID] AS [DBcatalogID]
FROM (select top 100 uploadguid,attname,attvalue,equipmentRef from #temp1 ) a
PIVOT (max(attvalue) FOR attname IN ([CatalogID]) ) p) b ON a.uploadguid = b.uploadguid
WHERE a.attname <> 'CatalogID'
--Drop table #temp1
END