SQL或MSEXCEL将数据从行转置到列,而不是透视或转换
我试图使用transpose/pivot(SQLServer2008),但是MAX函数和TRANSFORM都不适合我。有没有其他方法来实现这一点,或者使用MSEXCEL 这就是我所拥有的 `SQL或MSEXCEL将数据从行转置到列,而不是透视或转换,sql,sql-server,excel,pivot,transform,Sql,Sql Server,Excel,Pivot,Transform,我试图使用transpose/pivot(SQLServer2008),但是MAX函数和TRANSFORM都不适合我。有没有其他方法来实现这一点,或者使用MSEXCEL 这就是我所拥有的 ` 姓名问题答案 回答者1问题1回答 回答者1问题2回答 回答者1问题3回答 答复者1问题4答复 答复者1问题5答复 回答者2问题1回答 回答者2问题2回答者 回答者2问题3回答 答复者2问题4答复 答复者2问题5答复 答复者3问题1答复 回答者3问题2回答者 回答者3问题3回答者 答复者3问题4答复 答复者
姓名问题答案
回答者1问题1回答
回答者1问题2回答
回答者1问题3回答
答复者1问题4答复
答复者1问题5答复
回答者2问题1回答
回答者2问题2回答者
回答者2问题3回答
答复者2问题4答复
答复者2问题5答复
答复者3问题1答复
回答者3问题2回答者
回答者3问题3回答者
答复者3问题4答复
答复者3问题5答复
`
最后我想说以下几点:
`
姓名问题1问题2问题3问题4问题5
响应者1文本文本
响应者2text文本
被调查者3文本文本文本
`
这是我尝试过但失败的查询:
挑选
调查对象
最大值(当问题为“问题1”时的情况,然后回答其他空结束)为“问题1”,
最大值(当问题为“问题2”时,则回答其他空结束)为“问题2”
从桌子上
按受访者分组
我认为Excel可能是最好的解决方案,有什么想法吗?您可以在sql中使用透视表:
Select * from tablename
Pivot( max(Answer) for Question in ([Question1], [Question2],[Question3],[Question4],[Question5])) as pivotTable
您可以在sql中使用透视表:
Select * from tablename
Pivot( max(Answer) for Question in ([Question1], [Question2],[Question3],[Question4],[Question5])) as pivotTable
遗憾的是,它没有工作,我得到:操作数数据类型ntext对于max运算符无效。无法使用MAX functionYea,MAX在varchar或nvarchar上工作,请查看是否可以将其从ntext更改为varchar,并且应该可以工作。请您告诉我如何将varchar合并到您提供的上述查询中,好吗?您可以更改列数据类型:alter TABLE tableName alter column ANSWERK varchar(MAX)遗憾的是,它不起作用,I get:操作数数据类型ntext对于max运算符无效。无法使用MAX functionYea,MAX在varchar或nvarchar上工作,请查看是否可以将其从ntext更改为varchar,并且应该可以工作。请您告诉我如何将varchar合并到您提供的上述查询中,好吗?您可以更改列数据类型:alter TABLE tableName alter column Answer varchar(MAX)
Select * from tablename
Pivot( max(Answer) for Question in ([Question1], [Question2],[Question3],[Question4],[Question5])) as pivotTable