仓酷云

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

[学习教程] MSSQL网页编程之金额算计求值成绩

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

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

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

x
对于update操作,event中依次记录旧行,新行的值。金额|成绩
原帖地点:

http://community.csdn.net/Expert/topic/3190/3190686.xml?temp=.6296961

表test中纪录:
aabb
00150.5
00260
00315.4
00425
00548
...

输出任一金额,然后在表中查找是不是有该金额或几笔记录的算计即是该金额.
如:输出25,则要找出004,输出85,则要找出002与004,顺次类推。
------------------------------------------------------------------------------------


--测试数据
createtabletest(aavarchar(10),bbnumeric(10,2))
inserttestselect001,50.5
unionallselect002,60
unionallselect003,15.4
unionallselect004,25
unionallselect005,48
unionallselect006,37
go

--查询函数
createfunctionfn_search(@Numnumeric(10,2))
returns@rtable(aavarchar(10),bbnumeric(10,2))
as
begin
declare@ttable(aavarchar(8000),aa1varchar(10),bbnumeric(10,2),levelint)
declare@lint

insert@rselectaa,bbfromtestwherebb=@num
if@@rowcount>0gotolb_exit

set@l=0
insert@tselect,+aa+,,aa,bb,@lfromtestwherebb<@num
while@@rowcount>0
begin
insert@rselectdistincta.aa,a.bb
fromtesta,(
selecta.aa,a.bb,aa1=b.aafromtesta,@tb
whereb.level=@l
andb.aa1<a.aa
anda.bb=@num-b.bb
)bwherea.aa=b.aaorcharindex(,+a.aa+,,b.aa1)>0
if@@rowcount>0gotolb_exit

set@l=@l+1
insert@tselectb.aa+a.aa+,,a.aa,a.bb+b.bb,@l
fromtesta,@tb
whereb.level=@l-1
andb.aa1<a.aa
anda.bb<@num-b.bb
end

lb_exit:
return
end
go

--挪用测试1
select*fromdbo.fn_search(25)

/*--了局

aabb
----------------------
00425.00

(所影响的行数为1行)
--*/

--挪用测试2
select*fromdbo.fn_search(135.5)

/*--了局

aabb
----------------------
00150.50
00260.00
00425.00
00548.00
00637.00

(所影响的行数为5行)
--*/

--挪用测试3(找不到的,无前往值)
select*fromdbo.fn_search(135.7)

/*--了局
aabb
----------------------

(所影响的行数为0行)
--*/
go

droptabletest
dropfunctionfn_search
我们分析上面的两个操作,都有一个“删除数据”的过程。
飘灵儿 该用户已被删除
沙发
发表于 2015-1-19 16:25:45 | 只看该作者
having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
再现理想 该用户已被删除
板凳
发表于 2015-1-28 08:28:59 | 只看该作者
作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!
因胸联盟 该用户已被删除
地板
发表于 2015-2-5 20:14:32 | 只看该作者
Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。
若相依 该用户已被删除
5#
发表于 2015-2-13 11:50:50 | 只看该作者
两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书
爱飞 该用户已被删除
6#
发表于 2015-3-3 21:08:41 | 只看该作者
很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。
再见西城 该用户已被删除
7#
发表于 2015-3-11 13:48:10 | 只看该作者
也可谈一下你是怎么优化存储过程的?
不帅 该用户已被删除
8#
发表于 2015-3-18 21:23:33 | 只看该作者
分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。
老尸 该用户已被删除
9#
发表于 2015-3-26 18:57:42 | 只看该作者
这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-22 19:11

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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