IF (OBJECT_ID('tempdb..#t1') IS NOT NULL) DROP TABLE #t1
declare @select_table nvarchar(4000)
declare @company varchar(250)
create table #t1 (product VARCHAR(max), company VARCHAR(250))
insert into #t1 values('Двухслойные коврики', 'Комания1')
insert into #t1 values('Двухслойные коврики', 'Комания4')
insert into #t1 values('Коврики', 'Комания1')
insert into #t1 values('Коврики', 'Комания5')
insert into #t1 values('Коврики', 'Комания6')
insert into #t1 values('Зеркало заднего вида', 'Комания2')
insert into #t1 values('Тормозные колодки', 'Комания3')
insert into #t1 values('Тормозные колодки', 'Комания6')
select * from #t1
-----------------------------------------------------разворот таблицы-----------
set @select_table = 'select distinct t.product '
DECLARE c_vendor CURSOR FOR SELECT distinct company FROM #t1
OPEN c_vendor
FETCH NEXT FROM c_vendor INTO @company
WHILE @@FETCH_STATUS = 0
BEGIN
set @select_table = @select_table +' , ' + '[' + @company + ']=' +' (select 1 from #t1 c where c.product = t.product and c.company = ' + ''''+ @company +'''' +')'
FETCH NEXT FROM c_vendor INTO @company
END
CLOSE c_vendor
DEALLOCATE c_vendor
set @select_table = @select_table + 'from #t1 t order by t.product
'
exec (@select_table)
IF (OBJECT_ID('tempdb..#t1') IS NOT NULL) DROP TABLE #t1
Начальная таблица
product company Двухслойные коврики Комания1 Двухслойные коврики Комания4 Коврики Комания1 Коврики Комания5 Коврики Комания6 Зеркало заднего вида Комания2 Тормозные колодки Комания3 Тормозные колодки Комания6
Результат
product Комания1 Комания2 Комания3 Комания4 Комания5 Комания6 Двухслойные коврики 1 NULL NULL 1 NULL NULL Зеркало заднего вида NULL 1 NULL NULL NULL NULL Коврики 1 NULL NULL NULL 1 1 Тормозные колодки NULL NULL 1 NULL NULL 1