This is called a cross-tab request β there are many examples of how to create them; eg:
http://www.simple-talk.com/sql/t-sql-programming/creating-cross-tab-queries-and-pivot-tables-in-sql/
EDIT
@Bluefleet using pivot point is probably the best answer; using a simple cross tab may require you to know some aspects of the data form in advance, so the columns are essentially hardcoded - if the columns are stable, then the following should work:
declare @Answers table (AnswerID int, QuestionNumber int , Answer int , UserID int) declare @Users table (UserID int , FirstName varchar(10), LastName varchar(10)) declare @Questions table (QuestionNumber int, QuestionName varchar(10)) insert into @Answers (AnswerID, QuestionNumber, Answer, UserID) values (1, 1, 10, 1) insert into @Answers (AnswerID, QuestionNumber, Answer, UserID) values (2, 2, 20, 1) insert into @Answers (AnswerID, QuestionNumber, Answer, UserID) values (3, 3, 30, 2) insert into @Answers (AnswerID, QuestionNumber, Answer, UserID) values (1, 1, 40, 2) insert into @Answers (AnswerID, QuestionNumber, Answer, UserID) values (2, 2, 50, 2) insert into @Answers (AnswerID, QuestionNumber, Answer, UserID) values (3, 3, 60, 3) insert into @Answers (AnswerID, QuestionNumber, Answer, UserID) values (1, 1, 70, 3) insert into @Answers (AnswerID, QuestionNumber, Answer, UserID) values (2, 2, 80, 3) insert into @Users (UserID, FirstName, LastName) values (1, 'Tom', 'Smith') insert into @Users (UserID, FirstName, LastName) values (2, 'Dick', 'Brown') insert into @Users (UserID, FirstName, LastName) values (3, 'Harry', 'Robinson') insert into @Questions (QuestionNumber, QuestionName) values (1, 'Question 1') insert into @Questions (QuestionNumber, QuestionName) values (2, 'Question 2') insert into @Questions (QuestionNumber, QuestionName) values (3, 'Question 3') select QuestionName, MAX(User1) as 'Tom Smith', MAX(User2) as 'Dick Brown', MAX(User3) as 'Harry Robinson' from ( select q.QuestionName, (case when a.UserID=1 then Answer else null end) as 'User1', (case when a.UserID=2 then Answer else null end) as 'User2', (case when a.UserID=3 then Answer else null end) as 'User3' from @Answers a join @Users u on u.UserID = a.UserID join @Questions q on q.QuestionNumber = a.QuestionNumber ) as combined group by QuestionName QuestionName Tom Smith Dick Brown Harry Robinson