- креатин tbale
Сначала мы создадим временную таблицу, в которой мы будем хранить данные, которые у вас есть, и вашу таблицу
create table #table1
(
[Crew Name] varchar(500) ,
Employee varchar(500)
)
INsert into #table1
values (....)
select * from #table1
- Динамический выбор
затем мы создадим динамический запрос для получения имеющихся у нас столбцов, чтобы мы могли добавить столько экипажей, сколько захотим,
declare @DynamicPivotQuery as nvarchar(max)
declare @ColumnName as nvarchar(max)
select @ColumnName = ISNULL(@ColumnName +',','') + QUOTENAME([Crew Name])
from (select distinct [Crew Name] from #table1) as Country
set @DynamicPivotQuery = N'select ' +@ColumnName + '
from #table1
Pivot ( MAX(Employee)
FOR [Crew Name] in (' +@ColumnName+')) as Pivoted
'
exec (@DynamicPivotQuery)
таким образом, мы получим только первую строку для каждого столбца
поэтому мы должны найти способ агрегировать и получить другие столбцы, чтобы продемонстрировать, что я объединю Ммин, и здесь я остановил свои яички, но вы можете сделать больше, чем это, с некоторыми яичками
теперь объединение:
declare @DynamicPivotQuery as nvarchar(max)
declare @ColumnName as nvarchar(max)
select @ColumnName = ISNULL(@ColumnName +',','') + QUOTENAME([Crew Name])
from (select distinct [Crew Name] from #table1) as Country
set @DynamicPivotQuery = N'select ' +@ColumnName + '
from #table1
Pivot ( MAX(Employee)
FOR [Crew Name] in (' +@ColumnName+')) as Pivoted
union
select ' +@ColumnName + '
from #table1
Pivot ( MIN(Employee)
FOR [Crew Name] in (' +@ColumnName+')) as Pivoted
'
exec (@DynamicPivotQuery)
вот результат:
если вы пойдете этим путем, я уверен, что вы найдете способ объединить все результаты