This might work in MYSQL.Declare @T table(id int,sales_order int,tracking_number varchar(20))Insert @T Select 1, 58322 , 'z003001' union all Select 2,58323 , 'z003002' union all Select 3, 58323 , 'z003003' union all Select 4,58324 , 'z003004' union all Select 5,58324 , 'z003005'Select Min(id)as id,sales_order,Max(Case When seq =1 then tracking_number Else '' End) + ',' +Max(Case When seq =2 then tracking_number Else '' End) + ',' +Max(Case When seq =3 then tracking_number Else '' End) + ',' +Max(Case When seq =4 then tracking_number Else '' End)as tracking_numberfrom(Select s.id,s.sales_order,tracking_number,(Select Count(*) from @T Where sales_order =s.sales_orderand tracking_number <=s.tracking_number)as seqfrom @T s)MGroup by sales_order