首页 新闻 会员 周边

关于交叉数据报表的问题

0
悬赏园豆:20 [已关闭问题]
<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>
billao的主页 billao | 初学一级 | 园豆:180
提问于:2008-03-03 10:01
< >
分享
其他回答(1)
0
数据不多可以全部选到内存里面或者分批加载, 构造成对象再筛选. 挺不喜欢写一堆复杂的Sql,维护起来也麻烦.
沙加 | 园豆:3680 (老鸟四级) | 2008-03-03 11:01
0
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 -----------------------完------------------
孙英雄 | 园豆:857 (小虾三级) | 2008-03-12 13:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册