gpt4 book ai didi

php - 透视sql server多个表和列

转载 作者:搜寻专家 更新时间:2023-10-31 22:00:18 24 4
gpt4 key购买 nike

我是第一次来这里。一般来说,我给自己找到了一些答案,但现在我在使用 PIVOT sql server 2012 时遇到了一个大问题。我只是一名实习生,我不知道如何使用 PHP 对多个表和列进行 PIVOTS。所以我有 3 个表(设备、Champ-perso、Equipement_Complément),我使用 PHP 通过 SQL 查询成功显示了所有数据。但是在这个显示中,有重复的装备,Champ-Perso 和 Equipement_Complément 出现在行中。我想做一个 PIVOT 函数,它删除重复的设备,并在列中显示 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 A B ... G
ENG-0002 A1 B1 ... G1
`

最佳答案

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

首先您需要从您的表中找到唯一的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该值将丢失。

关于php - 透视sql server多个表和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30193399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com