Я пытаюсь написать заявление sql, которое создает сводную таблицу.сводная таблица w/out функция
Данные представляют собой список ответов на опрос и составлены из запроса объединения, включающего ответы респондентов, ответ и ответ. Таблица ответ структурирован, как показано ниже:
______________________________________________________________
|AnswerID|ResponseID|QuestionID|AnswerComment |
| 1 | 1 | 1 |This is answer 1 |
| 2 | 1 | 2 |This is answer 2 |
| 3 | 1 | 3 |This is answer 3 |
| 4 | 2 | 1 |Answer 1 Respondent 2 |
| 5 | 2 | 3 |Resp 2, No Q.2 |
| 6 | 3 | 2 |I answered Q.2 only |
|____________________________________________________________|
Ответчик выглядит следующим образом:
______________________________________________________________
|RespondentID|GivenName|Surname|age, gender, blah blah |
|____________________________________________________________|
Ответ:
______________________________________________________________
|ResponseID|ResponseDate|RespondentID|Attachment |
|____________________________________________________________|
и Вопрос:
_____________________________________________________
|QuestionID|QuestionNumber|QuestionText| |
|___________________________________________________|
Я хочу, чтобы мой выход в форма:
________________________________________________________________________________________
|RespondentInfo|ResponseDate|1 |2 |3 |
|Respondent 1 |15/10/2012 |This is answer 1 |This is answer 2 |This is answer 3|
|Respondent 2 |17/10/2012 |Answer 1 Respondent 2 | |Resp 2, No Q.2 |
|Respondent 3 |19/10/2012 | |I answered Q.2 only| |
|______________________________________________________________________________________|
Я хочу получить по одной строке ответа каждого ответчика в соответствующем столбце. Созданный вами запрос - хотя он отвечает на правильные столбцы, - содержит новую строку для каждого ответа с нулями во всех пустых столбцах.
My SQL:
SELECT Respondent, ResponseDate,
[1], [2], [3]
FROM (
SELECT Respondent.Surname + ', ' + FirstName as RespondentInfo,
Response.ResponseDate,
isnull(Answer.AnswerComment, '') as Answer,
Qustion.QuestionNumber
FROM Answer INNER JOIN
Question ON Answer.QuestionID = Question.QuestionID INNER JOIN
Response ON Answer.ResponseID = Response.ResponseID INNER JOIN
Respondent ON Response.RespondentID = Respondent.RespondentID
) as ResponseQuery
PIVOT (
max(Answer)
FOR ResponseQuery.QuestionNumber in ([1], [2], [3])
) AS OutputTable
Я думаю, что проблема в том, что я не использую агрегатную функцию так, дефолт макс(). Может кто-то указать мне верное направление.
Извините, если мой вопрос слишком подробный.