Pivot SQL Server несколько таблиц и столбцов

я впервые приехал сюда. В общем, я нашел себе несколько ответов, но теперь у меня возникла большая проблема с PIVOT sql server 2012. Я всего лишь стажер, и я не знаю, как делать PIVOTS с несколькими таблицами и столбцами при использовании PHP.
Итак, у меня есть 3 таблицы (Equipements, Champ-perso, Equipement_Complément), мне удалось отобразить все данные с помощью SQL-запроса с использованием PHP. Но на этом экране есть дубликаты оборудования, а 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
`

3

Решение

Здесь решение вашей проблемы. Я предполагаю, что данные, указанные в вашем вопросе, находятся в таблице #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 везде, где значение будет отсутствовать.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]