ピボット テーブルを作成する SQL ステートメントを作成しようとしています。
データは調査回答のリストであり、表の回答者、回答、および回答を含む結合クエリから作成されます。回答表は次のように構成されています。
______________________________________________________________
|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| |
|______________________________________________________________________________________|
対応する列の各回答で、回答者ごとに 1 行を取得したいと考えています。私が作成したクエリは、回答を正しい列にピボットしますが、すべての空白列に null を含む各回答の新しい行を提供します。
私の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
問題は、集計関数を使用していないため、デフォルトで max() になっているためだと思います。誰でも私を正しい方向に向けることができますか?
私の質問が冗長すぎる場合はお詫び申し上げます。