关于交叉数据报表的问题

<P>有一个问卷调查表:<BR>IP&nbsp;&nbsp;&nbsp;&nbsp; 问题  结果<BR>ip1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp; A<BR>ip1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp; B<BR>ip1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp; C<BR>ip2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp; B<BR>ip2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp; C<BR>ip2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp; C</P> <P>想生成的报表如下:<BR>IP&nbsp; 问题1 问题2 问题3&nbsp; <BR>x1&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C<BR>X2&nbsp;&nbsp; B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C</P> <P>该如何实现呢?</P> <P>网上的解决方案都用case和sum来合并,但我的字段是varchar的,不是数字类型的,该如何实现呢?谢谢!</P>

智慧大石
浏览 572回答 2
2回答

一只萌萌小番薯

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 -----------------------完------------------

一只斗牛犬

数据不多可以全部选到内存里面或者分批加载, 构造成对象再筛选. 挺不喜欢写一堆复杂的Sql,维护起来也麻烦.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server