you can even do like this if sql 2005:-SELECT t.scalename,MAX(CASE WHEN RowNo=1 THEN scalevalue ELSE NULL END) AS sv1,MAX(CASE WHEN RowNo=1 THEN points ELSE NULL END) AS p1,MAX(CASE WHEN RowNo=2 THEN scalevalue ELSE NULL END) AS sv2,MAX(CASE WHEN RowNo=2 THEN points ELSE NULL END) AS p2,MAX(CASE WHEN RowNo=3 THEN scalevalue ELSE NULL END) AS sv3,MAX(CASE WHEN RowNo=3 THEN points ELSE NULL END) AS p3,MAX(CASE WHEN RowNo=4 THEN scalevalue ELSE NULL END) AS sv4,MAX(CASE WHEN RowNo=4 THEN points ELSE NULL END) AS p4,MAX(CASE WHEN RowNo=5 THEN scalevalue ELSE NULL END) AS sv5,MAX(CASE WHEN RowNo=5 THEN points ELSE NULL END) AS p5FROM(SELECT ROW_NUMBER() OVER(PARTITION BY scaleid ORDER BY sclaevalueid) AS RowNo,scalename,scalevalue, pointsFROM Table1 t1INNER JOIN Table2 t2ON t2.scaleid=t1.scaleid)tGROUP BY t.scalename