我有一个表 Survey_Data_Response,其中填充了来自两个表的“插入”语句 - Survey_Question 和 Survey_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 )
有人可以帮我理解为什么这个 Pivot 不起作用以及如何使它起作用吗?
谢谢