2つのテーブル(Survey_QuestionとSurvey_Response)からの「insertinto」ステートメントが入力されたテーブルSurvey_Data_Responseがあり、それらはQuestionIDで結合されています。
SPを使用してSurvey_Data_Responseテーブルをピボットし、結果を一時テーブルに保存して、レポートを作成するためにクエリできるようにします。
Survey_Data_Responseテーブルには、QuestionID、ResponseID、Question、Response、ResponseDateTime、moduleIDのフィールドがあります。
質問の数は、調査によって変わる可能性があります。
QuestionID Question Response ResponseDateTime ResponseID ModuleID
123 Age 34 2011-06-06 18:21:00 ABC 123
345 Gender M 2011-06-06 18:21:00 DEF 123
567 Phone 444-4444 2011-06-06 18:21:00 HIG 123
123 Age 23 2011-06-07 12:01:00 MNO 123
789 Postal Code 90988 2011-06-07 12:01:00 XYZ 123
このようにテーブルをピボットし、列としての質問と適切なフィールドの応答を表示する必要があります。
ResponseID Age Gender Phone Postal Code ResponsDateTime
ABC 34 M 444-4444 2011-06-06 18:21:00
XYZ 23 90988 2011-06-07 12:01:00
過去2日間に多数のピボットクエリを試しましたが、うまくいきませんでした。これが私がいる場所です。列ヘッダーが返されますが、質問への回答が入力されていません。
DECLARE @cols VARCHAR(1000)
DECLARE @sqlquery VARCHAR(2000)
SELECT @cols = STUFF(( SELECT distinct ',' + QuoteName(question)
FROM temp_SURVEY_DATA FOR XML PATH('') ), 1, 1, '')
SET @sqlquery = 'SELECT * FROM
(SELECT DynamicQuestionResponseID,question,moduleid
FROM temp_SURVEY_DATA ) base
PIVOT (max(moduleid) FOR question
IN (' + @cols + ')) AS finalpivot'
EXECUTE ( @sqlquery )
誰かがこのピボットが機能しない理由とそれを機能させる方法を理解するのを手伝ってもらえますか?
ありがとう