SQL多条数据行转列显示

各位网络大神,最近遇到一个问题,在我数据库中取出的数据只是这样显示的:
图片说明

现在我们想将上图那种取出的数据转成下面这种多条列打横数据,见下图:

图片说明

单条行专列我会处理,但是多条行转列不知如何处理,望各位大神指点。

如问题解决也可以发20私包感谢。

https://www.cnblogs.com/oneivan/archive/2012/02/16/2353796.html
给你一个例子去看一下。还有你图片说明不应该合并单元格

如果是在web上 不用表格的话 还是很好实现的,用表格的话 就得反转数据集。

定义对象然后来映射属性,从数据库查询出封装好的对象,不管是你页面展示还是报表导出,都可以通过遍历集合来把自己想要的任意属性放置在任意列中。
就上图的效果来说,最简单的方法就是多次遍历,每次遍历赋值一个属性到一行中。你的行数是固定的,6个属性6行,列数不固定,根据你查询到的数据库中的数据来决定。有多少列都可以遍历输出,就解决了你的问题。

这里提供两种方法实现,
第一用数据库直接查询出来,然后显示到列表上面去,可以参考:http://blog.csdn.net/mango_love/article/details/51210020
但是特别影响性能。。
第二种方法就是,把这个表查询出来在显示的时候去做处理,可以这么去做,因为有规律可循

https://www.cnblogs.com/no27/p/6398130.html
可参考

https://www.cnblogs.com/liunanjava/p/4961923.html参考

测试结果见图,不知道能否满足你的需求
图片说明
图片说明
有2个位置还待完善
1.你图中示例有null值,wm_concat转换的时候直接跳过了,所以将null值转换为了999,需要后续处理下
2.结果都是存在一行数据里面,逗号分隔,你如果单单是想做报表,完全可将数据导出到excel,再用逗号分隔下。
或者用instr函数,去控制下将逗号分隔成不同的字段

行转列 as from
select wbname

,sum(case when newstime='上周' then total else 0 end) as '上周'

,sum(case when newstime='昨天' then total else 0 end) as '昨天'

,sum(case when newstime='当天' then total else 0 end) as '当天'

,sum(case when newstime='直播报道' then total else 0 end) as '直播报道'

,sum(case when newstime='时间不详' then total else 0 end) as '时间不详'

,sum(case when newstime='其他' then total else 0 end) as '其他'

from (

select wbname,newstime,count(*) as total from wb group by wbname,newstime

as temp group by wbname;