金额合计求值问题

原创 2004年08月06日 22:02:00

原帖地址:

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

表test中记录:
  aa     bb 
  001   50.5
  002   60
  003   15.4
  004   25
  005   48
  ...

输入任一金额,然后在表中查找是否有该金额或几条记录的合计等于该金额.
如:输入25,则要找出004,输入85,则要找出002与004,依次类推。
------------------------------------------------------------------------------------


--测试数据
create table test(aa varchar(10),bb numeric(10,2))
insert test select '001',50.5
union  all  select '002',60
union  all  select '003',15.4
union  all  select '004',25
union  all  select '005',48
union  all  select '006',37
go

--查询函数
create function fn_search(@Num numeric(10,2))
returns @r table (aa varchar(10),bb numeric(10,2))
as
begin
 declare @t table (aa varchar(8000),aa1 varchar(10),bb numeric(10,2),level int)
 declare @l int

 insert @r select aa,bb from test where bb=@num
 if @@rowcount>0 goto lb_exit

 set @l=0
 insert @t select ','+aa+',',aa,bb,@l from test where bb<@num
 while @@rowcount>0
 begin
  insert @r select distinct a.aa,a.bb
  from test a,(
   select a.aa,a.bb,aa1=b.aa from test a,@t b
   where b.level=@l
    and b.aa1<a.aa
    and a.bb=@num-b.bb
  )b where a.aa=b.aa or charindex(','+a.aa+',',b.aa1)>0
  if @@rowcount>0 goto lb_exit

  set @l=@l+1
  insert @t select b.aa+a.aa+',',a.aa,a.bb+b.bb,@l
  from test a,@t b
  where b.level=@l-1
   and b.aa1<a.aa
   and a.bb<@num-b.bb
 end

lb_exit:
 return
end
go

--调用测试1
select * from dbo.fn_search(25)

/*--结果

aa         bb          
---------- ------------
004        25.00

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

--调用测试2
select * from dbo.fn_search(135.5)

/*--结果

aa         bb          
---------- ------------
001        50.50
002        60.00
004        25.00
005        48.00
006        37.00

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

--调用测试3(找不到的,无返回值)
select * from dbo.fn_search(135.7)

/*--结果
aa         bb          
---------- ------------

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

drop table test
drop function fn_search

1、表达式求值问题 2、任务调度

  • 2017年11月10日 07:26
  • 229KB
  • 下载

C语言大数求值问题

  • 2017年05月29日 12:56
  • 915B
  • 下载

问题 H: 简单表达式求值

问题 H: 简单表达式求值 题目描述 给出简单的表达式,运算符只有加减乘除,运算数是非负整数,计算其值。 输入 输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间...
  • hnust_V
  • hnust_V
  • 2016年06月23日 22:23
  • 286

关于C语言表达式求值问题的解释

很多新手对于C的表达式求值(如i++ + ++i)这一问题感到十分的疑惑,不能很好地理解,今日小轩献丑,准备为新手们解释一下,如有不通之处,请各位同道指出。 首先,贴上裘老的解释:http://...

表达式求值问题

  • 2013年01月06日 09:43
  • 158KB
  • 下载

数据结构表达式求值问题

  • 2008年12月02日 11:03
  • 46KB
  • 下载

USTCOJ 1361开灯问题、1362 单词求值、1363 幸福配对

USTCOJ 1361-1363题目比较简单,就不多说了。其中值得留意的是gets函数会读入'\r'(如果有的话),处理方法详见1362。 1361开灯问题:http://acm.ustc....

表达式求值问题 数据结构

  • 2009年04月29日 07:15
  • 111KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:金额合计求值问题
举报原因:
原因补充:

(最多只允许输入30个字)