Something like:- SELECT u.username, MAX(CASE WHEN b.RowNo=1 THEN b.bookname ELSE NULL END) AS book1, MAX(CASE WHEN b.RowNo=2 THEN b.bookname ELSE NULL END) AS book2, MAX(CASE WHEN b.RowNo=3 THEN b.bookname ELSE NULL END) AS book3, MAX(CASE WHEN b.RowNo=4 THEN b.bookname ELSE NULL END) AS book4FROM YourUsertable uINNER JOIN (SELECT ROW_NUMBER() OVER(PARTITION BY userid ORDER BY bookid) AS RowNo,*FROM Yourbooktable) bON b.userid=u.useridGROUP BY u.usernme
please replace the table & column names with you actual ones.