Вы можете использовать conditional aggregation
как
with tab(USERID, Transaction#, PRODUCTNAME, Amount) as
(
select 1,1,'Free Pass' , 0 union all
select 1,2,'Monthly Pass', 10 union all
select 1,3,'Monthly Pass', 10 union all
select 2,1,'Free pass' , 0 union all
select 2,2,'Year Pass' ,100 union all
select 3,1,'Basic pass' , 5
)
select [USERID],
max(case when Transaction# = 1 then Productname end)
as 'Transaction 1',
max(case when Transaction# = 1 then Amount end)
as 'Amount 1',
max(case when Transaction# = 2 then Productname end)
as 'Transaction 2',
max(case when Transaction# = 2 then Amount end)
as 'Amount 2',
max(case when Transaction# = 3 then Productname end)
as 'Transaction 3',
max(case when Transaction# = 3 then Amount end)
as 'Amount 3'
from tab t
group by [USERID]
Rextester Demo