【SQL SERVER 2005+版本行转列示例】(2012年1-8月水源槑党25强榜单新鲜出炉)
来源:互联网 发布:单片机怎么连接电脑 编辑:程序博客网 时间:2024/05/17 06:13
在CSDN社区 MS-SQLSERVER板块,关于行转列的问题,层出不穷,之前dawugui,roy_88等高手都多次整理过,我就不再整理了,只是给出一个示例,以供大家参考。
槑党是CSDN水源2012年新出现的,这里对2012年1-8月的相关数据,简单的统计一下。
数据采集于下面地址:
http://forum.csdn.net/PointForum/Forum/ExpertTopList.aspx?flg=bigMonth&forumid=d5ce81ef-7dab-4abb-a7ca-ac03342ae03b&bigclassid=d5ce81ef-7dab-4abb-a7ca-ac03342ae03b&smallclassid=9231e8e0-b9bc-4c51-b364-ba68665814cc&date=2012-6&year=2012&month=6
统计只是在扩充话题板块TOP100名单中出现的用户,以昵称中出现槑党字样的为样本。
数据显示槑党在2012年1-8月期间,TOP100中有的相关数据共得216951分。
行转列后的统计结果为:
数据脚本我已经上传到了下载频道,有感兴趣的朋友,可以去免费下载。
地址: 相关数据脚本下载地址(含创建表的脚本和插入数据的脚本,无需积分)
行转列代码如下:
- --SQL SERVER 2005+ 静态行转列示例
- select
- row_number() over (order by
- (select sum(score) from dduser
- where username=b.username) desc) as 总排名,
- (select sum(score) from dduser where username=b.username) as 总得分,
- userDisplay as 昵称,
- username as 账号,
- max(isnull('第'+ltrim([1])+'名','')) as [1月],
- max(isnull('第'+ltrim([2])+'名','')) as [2月],
- max(isnull('第'+ltrim([3])+'名','')) as [3月],
- max(isnull('第'+ltrim([4])+'名','')) as [4月],
- max(isnull('第'+ltrim([5])+'名','')) as [5月],
- max(isnull('第'+ltrim([6])+'名','')) as [6月],
- max(isnull('第'+ltrim([7])+'名','')) as [7月],
- max(isnull('第'+ltrim([8])+'名','')) as [8月]
- from
- (select * from dduser) a
- pivot (max(rank) for [month] in ([1],[2],[3],[4],[5],[6],[7],[8])) b
- group by username,userDisplay order by 总得分 desc
- --SQL SERVER 2005+ 动态行转列示例
- declare @sql varchar(max),@colname varchar(max)
- select @sql = isnull(@sql + '],[' , '') + ltrim([month]) from dduser group by [month]
- set @sql = '[' + @sql + ']'
- select @colname=
- isnull(@colname+',','')+'max(isnull(''第''+ltrim(['
- +ltrim([month])+'])+''名'','''')) as ['+ltrim([month])+'月]'
- from dduser group by [month]
- exec (
- 'select
- row_number() over (order by
- (select sum(score) from dduser
- where username=b.username) desc) as 总排名,
- (select sum(score) from dduser where username=b.username) as 总得分,
- userDisplay as 昵称,
- username as 账号,
- '+@colname+'
- from (select * from dduser) a
- pivot (max(rank) for [month] in ('+@sql+')) b
- group by username,userDisplay order by 总得分 desc')
- --扩展:如果时间要扩展的话,把month字段改个名字,存储YYYY-MM格式即可存储多个年限的了。
0 0
- 【SQL SERVER 2005+版本行转列示例】(2012年1-8月水源槑党25强榜单新鲜出炉)
- [MSSQL]【SQL SERVER 2005+版本行转列示例】(2012年1-8月水源槑党25强榜单新鲜出炉)
- 【SQL SERVER 2005+版本行转列示例】(2012年1-8月水源槑党25强榜单新鲜出炉)
- 微软一站式示例代码库(中文版)2011-02-18版本, Azure+Bing + Windows Phone + WCF + Silverlight示例新鲜出炉。
- [新鲜出炉]Enterprise Library for .net 2.0 2006年1月版
- [新鲜出炉]Enterprise Library for .net 2.0 2006年1月版
- Exchange Server 2013部署助理新鲜出炉
- 2013年-华为面经新鲜出炉
- cartographer源码浅析(一)-新鲜出炉
- CGIC手册新鲜出炉
- OpenCV2.4.3新鲜出炉
- OpenCV2.4.3新鲜出炉
- OpenCV2.4.3新鲜出炉
- ExtAspNet logo 新鲜出炉
- OpenCV2.4.8新鲜出炉!
- 休闲小游戏新鲜出炉咯!
- 2012高考雷人语句新鲜出炉!可能高…
- (转)2005 新鲜出炉的最爆笑的口误(经典)
- Android高效加载大图、多图解决方案,有效避免程序OOM
- 机器学习之&&Aprior与FP Growth
- Android 中的对话框实现方式
- 可调用对象
- 【DP】 HDOJ 3506 Monkey Party
- 【SQL SERVER 2005+版本行转列示例】(2012年1-8月水源槑党25强榜单新鲜出炉)
- Android数据库:通过JDBC直接访问MySql
- zabbix二次开发愿景
- JBOSS配置,以及系统部署
- 解决codeblocks编译时出现Permission denied的办法
- Java Map遍历方式的选择 遍历Map 1411131 java Map
- MySQL字符串函数:字符串截取
- 从贝叶斯方法谈到贝叶斯网络
- org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type sette