SQL或MSEXCEL将数据从行转移到列NOT PIVOT或TRANSFORM
我正在尝试使用转置/数据透视(SQL Server 2008),但是MAX函数和TRANSFORM都不适用于我。 有没有办法实现这个不同,或通过使用MSEXCEL?
这是我的
`
<table> <tr><td>Name</td><td>Question</td><td>Answer</td></tr> <tr><td>Respondent 1</td><td>Question 1</td><td>Answer</td></tr> <tr><td>Respondent 1</td><td>Question 2</td><td>Answer</td></tr> <tr><td>Respondent 1</td><td>Question 3</td><td>Answer</td></tr> <tr><td>Respondent 1</td><td>Question 4</td><td>Answer</td></tr> <tr><td>Respondent 1</td><td>Question 5</td><td>Answer</td></tr> <tr><td>Respondent 2</td><td>Question 1</td><td>Answer</td></tr> <tr><td>Respondent 2</td><td>Question 2</td><td>Answer</td></tr> <tr><td>Respondent 2</td><td>Question 3</td><td>Answer</td></tr> <tr><td>Respondent 2</td><td>Question 4</td><td>Answer</td></tr> <tr><td>Respondent 2</td><td>Question 5</td><td>Answer</td></tr> <tr><td>Respondent 3</td><td>Question 1</td><td>Answer</td></tr> <tr><td>Respondent 3</td><td>Question 2</td><td>Answer</td></tr> <tr><td>Respondent 3</td><td>Question 3</td><td>Answer</td></tr> <tr><td>Respondent 3</td><td>Question 4</td><td>Answer</td></tr> <tr><td>Respondent 3</td><td>Question 5</td><td>Answer</td></tr> <tr><td></td></tr> </table>
`
我想最后的结果是:
`
<table> <tr><td>Name</td><td>Question 1</td><td>Question 2</td><td>Question 3</td><td>Question 4</td><td>Question 5</td></tr> <tr><td>Respondent 1</td><td>text</td><td>text</td><td>text</td><td>text</td><td>text</td></tr> <tr><td>Respondent 2</td><td>text</td><td>text</td><td>text</td><td>text</td><td>text</td></tr> <tr><td>Respondent 3</td><td>text</td><td>text</td><td>text</td><td>text</td><td>text</td></tr> </table>
`
这是我尝试和失败的查询︰SELECT Respondent,MAX(CASE WHEN Question ='Question 1'THEN Answer ELSE NULL END)AS'Question 1',MAX(CASE WHEN Question ='Question 2'THEN Answer ELSE NULL END )AS'Question 2'FROM Table GROUP BY Respondent
我认为Excel可能是最好的解决scheme,任何想法?
你可以在sql中使用数据透视表:
Select * from tablename Pivot( max(Answer) for Question in ([Question1], [Question2],[Question3],[Question4],[Question5])) as pivotTable