Как насчет примерно так:
Select P.UserId, P.Username, P.Email
, 'GROUP-Q1'
, A1.Answer As Question1
, A2.Answer As Question2
, P.[84273x1x4] As Question3
From People As P
Left Join Answers As A1
On A1.Code = P.[84273x1x1]
And A1.QID = 1
Left Join Answers As A2
On A2.Code = P.[84273x1x2]
And A2.QID = 2
Union All
Select P.UserId, P.Username, P.Email
, 'GROUP-Q2'
, A1.Answer As Question1
, A2.Answer As Question2
, P.[84273x1x7] As Question3
From People As P
Left Join Answers As A1
On A1.Code = P.[84273x1x5]
And A1.QID = 5
Left Join Answers As A2
On A2.Code = P.[84273x1x6]
And A2.QID = 6
Вот еще одно «более» динамическое решение (требуется SQL Server 2005+):
;With UserRawAnswers As
(
Select UserId, 1 As QuestionID, [84273x1x1] As Answer From People
Union All Select UserId, 2, [84273x1x2] From People
Union All Select UserId, 3, [84273x1x4] From People
Union All Select UserId, 5, [84273x1x5] From People
Union All Select UserId, 6, [84273x1x6] From People
Union All Select UserId, 6, [84273x1x7] From People
)
, UserAnswers As
(
Select UA.UserId
, Right(Q.Title) As Title
, Coalesce(DropListAnswers.Answer, UA.Answer) As Answer
From UserRawAnswers As UA
Join Questions
On Questions.QID = UA.QID
Left Join (Answer As DropListAnswers
Join Questions As DropListQuestions
On DropListQuestions.QID = DropListAnswers.QID
And DropListQuestions.QuestionType = 'DropDownList')
On DropListAnswers.Code = UA.Answer
)
Select P.UserID, P.Name, P.Email
, UA.Title
, Min( Case When UA.QuestionID = 1 Then UA.Answer End ) As Question1
, Min( Case When UA.QuestionID = 2 Then UA.Answer End ) As Question2
, Min( Case When UA.QuestionID = 3 Then UA.Answer End ) As Question3
From UserAnswers As UA
Join People As P
On P.UserID = UA.UserId
Group By P.UserID, P.Name, P.Email, UA.Title
Имейте в виду, что по сути язык SQL не предназначен для работы с динамической схемой (то есть динамически генерируемыми столбцами). Единственный способ построить динамическую схему - это использовать динамический SQL, и если вы достигнете этой точки, вы также можете сделать это на среднем уровне или в инструменте отчетности. Кроме того, денормализованная структура действительно затрудняет анализ.