One way would be using case and apply
Create table #temp (ProductCode varchar(20), YTMAch int,  YTMTg int,  MTDTg int,  YTDPer int,  MTDPer int)
Insert into #temp values
('PrimaxX'  , 1, 2 , 3, 4, 5),
('SuperGrip', 1, 2 , 3, 4, 5),
('WC'       , 1, 2 , 3, 4, 5),
('WP'       , 1, 2 , 3, 4, 5)
Select id,
  max(case when ProductCode = 'PrimaxX' then value end) PrimaxX,
  max(case when ProductCode = 'SuperGrip' then value end) SuperGrip,
  max(case when ProductCode = 'WC' then value end) WC,
  max(case when ProductCode = 'WP' then value end) WP
from 
(Select * from #temp cross apply (values ('YTMAch',YTMAch), 
                                         ('YTMTg',YTMTg),   
                                         ('MTDTg',MTDTg),   
                                         ('YTDPer',YTDPer),  
                                         ('MTDPer',MTDPer))v(id,value))c 
group by id