悬赏分:20 浏览:355 次
有一个问卷调查表:
IP 问题 结果
ip1 1 A
ip1 2 B
ip1 3 C
ip2 1 B
ip2 2 C
ip2 3 C
想生成的报表如下:
IP 问题1 问题2 问题3
x1 A B C
X2 B C C
该如何实现呢?
网上的解决方案都用case和sum来合并,但我的字段是varchar的,不是数字类型的,该如何实现呢?谢谢!
|
数据不多可以全部选到内存里面或者分批加载, 构造成对象再筛选. 挺不喜欢写一堆复杂的Sql,维护起来也麻烦. tempa表: IP 问题 结果 ip1 1 A ip1 2 B ip1 3 C IP2 1 B IP2 2 C IP2 3 C code: declare @sql varchar(4000) set @sql = 'select IP ' select @sql = @sql + ',MAX(case 问题 when '''+问题+''' then 结果 end) [问题'+问题++']' from (select distinct 问题 from tempa ) as a select @sql = @sql+'into tempb from tempa group by ip ' --print @sql exec(@sql) select * from tempb 结果: IP 问题1 问题2 问题3 ip1 A B C IP2 B C C -----------------------完------------------ |