透视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
值是否会丢失。