仓酷云

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

[学习教程] MSSQL网站制作之行列转换

[复制链接]
飘飘悠悠 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:23:27 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

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

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

x
Merge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用转换1.行列转换--一般
假定有张先生成就表(CJ)以下
[姓名][学科][成就]
张三语文80
张三数学90
张三物理85
李四语文85
李四数学92
李四物理82
王五数学60

想酿成
[姓名][语文][数学][物理]
张三809085
李四859282
王五null60null

declare@sqlvarchar(4000)
set@sql=select姓名
select@sql=@sql+,sum(case学科when学科then成就end)as学科
from(selectdistinct学科fromCJ)asa
set@sql=@sqlfromcjgroupby姓名
exec(@sql)


2.行列转换--兼并
有表A,
idpid
11
12
13
21
22
31
怎样化成表B:
idpid
11,2,3
21,2
31
创立一个兼并的函数
createfunctionfmerg(@idint)
returnsvarchar(8000)
as
begin
declare@strvarchar(8000)
set@str=
select@str=@str,cast(pidasvarchar)from表Awhereid=@id
set@str=right(@str,len(@str)-1)
return(@str)
end
go
--挪用自界说函数失掉了局
selectdistinctid,dbo.fmerg(id)from表A


优化的SQL查询算法,有效地提高查询速度
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-19 09:14

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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