you can use this also:-SELECT t.OrderDesc,MAX(CASE WHEN RowNo=1 THEN t.Description ELSE NULL END) AS Product1,MAX(CASE WHEN RowNo=2 THEN t.Description ELSE NULL END) AS Product2,MAX(CASE WHEN RowNo=3 THEN t.Description ELSE NULL END) AS Product3FROM(SELECT o.*,p.*,row_number() over(partition by o.OrderDesc order by p.ID) AS RowNoFROM Orders oINNER JOIN Orders_Products opON op.ID_Order=o.IDINNER JOIN Products pON op.ID_Products=p.ID)tGROUP BY t.OrderDesc