仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 755|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL教程之行转列

[复制链接]
再现理想 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:22:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性问:
表布局以下
timeneRegUserOpenUserCountSysrate
2006-10-1315:00WHMSC141.61288254256915
2006-10-1315:00WHMSC236.12255287226457
2006-10-1315:00WHMSC324.34191782169963
2006-10-1315:00WHMSC418.04150165133202
2006-10-1315:00WHMSC545.9322620287878
2006-10-1315:00WHMSC636.5239202214127
2006-10-1315:00WHMSC746.81331721297042
2006-10-1315:00WHMSC846.38240098215498
2006-10-1315:00WHMSC951.58323802292248
2006-10-1315:00WHMSCA136.81304640271097
2006-10-1315:00WHMSCB36.79316382278293
2006-10-1315:00WHMSCC38.69310090277396
2006-10-1315:00WHMSCD22.26206749182311

如今要做成如许
timene字段值
2006-10-1315:00WHMSC1RegUser41.61
2006-10-1315:00WHMSC1OpenUserCount288254
2006-10-1315:00WHMSC1Sysrate256915
...两头省略............
2006-10-1315:00WHMSCDRegUser22.26
2006-10-1315:00WHMSCDOpenUserCount206749
2006-10-1315:00WHMSCDSysrate182311

----到了下一个小时仍是如许,按time,ne分组,如
timene字段值
2006-10-1316:00WHMSC1RegUser41.61
2006-10-1316:00WHMSC1OpenUserCount288254
2006-10-1316:00WHMSC1Sysrate256915
...两头省略............
2006-10-1316:00WHMSCDRegUser22.26
2006-10-1316:00WHMSCDOpenUserCount206749
2006-10-1316:00WHMSCDSysrate182311

----------------------------------------------------------------------
答:
ifobject_id(pub..tab)isnotnull
droptabletab
go

createtabletab
(
timedatetime,
nevarchar(10),
ResUservarchar(10),
openusercountvarchar(10),
sysratevarchar(10)
)

insertintotab(time,ne,ResUser,openusercount,sysrate)values(2006-10-1315:00,WHMSC1,41.61,288254,256915)
insertintotab(time,ne,ResUser,openusercount,sysrate)values(2006-10-1315:00,WHMSC2,36.12,255287,226457)
insertintotab(time,ne,ResUser,openusercount,sysrate)values(2006-10-1316:00,WHMSC1,41.62,288256,256916)
insertintotab(time,ne,ResUser,openusercount,sysrate)values(2006-10-1316:00,WHMSC2,36.16,255286,226456)

selectconvert(varchar(16),time,120)astime,ne,ResUseras字段,ResUseras值fromtabunion
selectconvert(varchar(16),time,120)astime,ne,openusercountas字段,openusercountas值fromtabunion
selectconvert(varchar(16),time,120)astime,ne,sysrateas字段,sysrateas值fromtab
orderbytime,ne

droptabletab
--了局
timene字段值
-------------------------------------------------
2006-10-1315:00WHMSC1openusercount288254
2006-10-1315:00WHMSC1ResUser41.61
2006-10-1315:00WHMSC1sysrate256915
2006-10-1315:00WHMSC2openusercount255287
2006-10-1315:00WHMSC2ResUser36.12
2006-10-1315:00WHMSC2sysrate226457
2006-10-1316:00WHMSC1openusercount288256
2006-10-1316:00WHMSC1ResUser41.62
2006-10-1316:00WHMSC1sysrate256916
2006-10-1316:00WHMSC2openusercount255286
2006-10-1316:00WHMSC2ResUser36.16
2006-10-1316:00WHMSC2sysrate226456

(所影响的行数为12行)


如果某个数据列里包含许多重复的值,就算为它建立了索引也不会有很好的效果。比如说,如果某个数据列里包含的净是些诸如“0/1”或“Y/N”等值,就没有必要为它创建一个索引。
因胸联盟 该用户已被删除
沙发
发表于 2015-1-19 09:51:55 | 只看该作者
如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
莫相离 该用户已被删除
板凳
发表于 2015-1-26 12:32:52 | 只看该作者
这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。
不帅 该用户已被删除
地板
发表于 2015-2-4 15:19:05 | 只看该作者
如果处理少量数据,比如几百条记录的数据,我不知道这两种情况哪个效率更高,如果处理大量数据呢?比如有表中有20万条记录.
活着的死人 该用户已被删除
5#
发表于 2015-2-10 03:00:12 | 只看该作者
where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
老尸 该用户已被删除
6#
发表于 2015-2-28 17:53:21 | 只看该作者
SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)
若天明 该用户已被删除
7#
发表于 2015-3-10 04:25:18 | 只看该作者
微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。
admin 该用户已被删除
8#
发表于 2015-3-17 05:00:19 | 只看该作者
比如日志传送、比如集群。。。
乐观 该用户已被删除
9#
发表于 2015-3-23 19:58:18 | 只看该作者
微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-5 00:03

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表