小魔女 发表于 2015-1-16 22:33:01

MSSQL网页编程之金额算计求值成绩

对于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了。但是能不能被大伙用起来就不知道了。

若相依 发表于 2015-2-13 11:50:50

两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书

爱飞 发表于 2015-3-3 21:08:41

很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。

再见西城 发表于 2015-3-11 13:48:10

也可谈一下你是怎么优化存储过程的?

不帅 发表于 2015-3-18 21:23:33

分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。

老尸 发表于 2015-3-26 18:57:42

这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。
页: [1]
查看完整版本: MSSQL网页编程之金额算计求值成绩