透视SQL Server多个表和列

这是我第一次来这里 在一般情况下,我发现自己一些答案,但现在我得到了一个大的问题与枢轴SQL服务器2012年。我只是一个实习生,我不知道如何使用PHP中的多个表和列的PIVOTS。 所以我有3个表(设备,冠军,Equipement_Complément),我成功地通过使用PHP的SQL查询显示所有的数据。 但在这个显示中,有些是重复的,而Champ-Perso和Equipement_Complément是以行的forms出现的。 我想做一个functionPIVOT删除equipements复制,并显示列的Champ-Perso和Equipement_Complément。

这是我的显示器

`Name_Equipement Champ-Perso Equipemennt-Complément ENG-0001 Année rénovation A ENG-0001 Largeur utile (mm) B ENG-0001 Nb de pinces de dépose C ENG-0001 Nb de postes dengagement D ENG-0001 Nb de voies E ENG-0001 Numéro du train F ENG-0001 Type/modèle G ENG-0002 Année rénovation A1 ENG-0002 Largeur utile (mm) B1 ENG-0002 Nb de pinces de dépose C1 ENG-0002 Nb de postes dengagement D1 ENG-0002 Nb de voies E1 ENG-0002 Numéro du train F1 ENG-0002 Type/modèle G1 ` 

我想显示

 `Name_Equipment Année rénovation Largeur Utile (mm) ... Type:Modèle ENG-0001 AB ... G ENG-0002 A1 B1 ... G1 ` 

这里解决你的问题。 我假设您的问题中显示的数据在表#temp

首先,你需要从你的桌子上find独特的Champ-Perso 。 使用下面的查询。

 select * into #temp1 from (select distinct([Champ-Perso]) from #temp) as A 

现在写下你的数据透视表如下…

 Declare @str nvarchar(1000) Declare @SQL nvarchar(1000) SELECT @str = COALESCE(@str+'],[', '') + [Champ-Perso] FROM #temp1 set @str = '[' +@str + ']' set @SQL = N' select [Name_Equipement], ' + @str +' from (select [Name_Equipement], [Champ-Perso], [Equipemennt-Complément] from #temp) as tbl Pivot ( max([Equipemennt-Complément]) for [Champ-Perso] in ('+ @str+') ) as p' 

要获得结果,请激发此查询…

 EXECUTE sp_executesql @sql 

注意:由于Champ-Perso在你的Name_Equipement并不常见,所以你会看到NULL值是否会丢失。