|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP在国内异常流行,因为国内大多使用的是盗版的Windows和盗版的SQLServer,而ASP+COM+SQLServer实际上也是一种不错的搭配,其性能也不输于PHP+MYSQL,特别是Windows系统和SQLServer都有图形界面,比APACHE和MYSQL易于维护,因此对于不重视知识产权的国家来说也是一种不错的选择。统计比来因为开辟必要,触及到了成就统计这块,这内里计划到了sql交织表的使用,试了试,以为很有感受,如今写出来人人看看,有甚么不合错误的接待斧正^_^
起首我们创建以下的表:
sc(成就表)
stuidclsidscroe
------------------------------------------------------------------
0101175.0
0102170.0
0103190.0
0101289.0
0102280.0
0103299.0
0101389.0
0102379.0
0103367.0
个中stuid暗示先生编号,clsid暗示课程编号,scroe暗示成就
stu(先生表)
stuidstuname
-------------------------------------------------------------
101张三
102李四
103王五
cls(课程表)
clsidname
-------------------------------------------------------------
1语文
2数学
3英语
接上去就是关头了,实在也不算好庞大,就是用到了静态sql
declare@sqlnvarchar(4000),@sql1nvarchar(4000)
select@sql=,@sql1=
select@sql=@sql+,[+name+]=sum(caseclsidwhen+clsid+thenscroeelse0end),
@sql1=@sql1+,[+name+名次]=(selectsum(1)from#where[+name+]>=a.[+name+])
from(selectdistinctb.clsid,c.namefromscasbinnerjoinclsasconc.clsid=b.clsid)asaorderbyclsid
exec(selectstuid学号+@sql+,总成就=sum(scroe)
,均匀分=Convert(dec(5,1),avg(scroe)),总名次=(selectsum(1)from(selectstuid,aa=sum(scroe)fromscgroupbystuid)aawheresum(a.scroe)<=aa)into#fromscasagroupbystuidselectb.stunameas姓名,a.*+@sql1+from#asainnerjoinstuasbona.学号=b.stuid)
以下就是了局:
姓名学号语文数学英语总成就均匀分总名次语文名次数学名次英语名次
------------------------------------------------------------------------------------------
张三010175.089.089.0253.084.32221
李四010270.080.079.0229.076.33332
王五010390.099.067.0256.085.31113
这就是交织表的用法,关于报表统计很有效处,我们能够依此类推写出功效更壮大的查询。
</p>由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况; |
|