其实就是用0。01到1之间的(0.01,0.02,0.03,0.04,,,每次递增0.01)去替换我的sql语句的第一行的0。58,和price比较。
要循环,

解决方案 »

  1.   

    --定义你的变量
    declare @var numeric
    select @var=0.01
    while @var<=1  --循环你的变量
    --执行你的语句
    select min(price)as aa,id as bb into #tmp from test where price>0.58 (变量)group by id
    Select sum(volume) From test From test  join #tmp on id = bb and price = aa
    Drop Table #tmp
    select @var=@var+0.01
    wend
      

  2.   

    --定义你的变量
    declare @var numeric
    select @var=0.01
    while @var<=1  --循环你的变量
    --执行你的语句
    select min(price)as aa,id as bb into #tmp from test where price>@var (变量)group by id
    Select sum(volume) From test From test  join #tmp on id = bb and price = aa
    Drop Table #tmp
    --这里应该有一个把你的比较结果存入临时表的动作
    select @var=@var+0.01
    wend
    --这里应该有一个查询结果临时表的动作
      

  3.   

    在oracle里运行也能这么写吗?
      

  4.   

    sql server中可以用 longji(龙寂)的oracle我也没用过你转到oracle版去吧
      

  5.   

    感觉oracle和sql的存储过程差不多阿
      

  6.   

    感觉怎么行,你可以感觉所有的程序都是一样的,事实也是这样,但那是学哲学的人研究的事情。数据库管理系统,你只能了解个家的规则才行,Oracle就不是微软
      

  7.   

    longji好像不对阿,其实我是想找出每一个id离变量(大于)@var最近的价格的量之和!
      

  8.   

    select * into #lfy from test
    create table #lfy2( aa numeric,id int)
    go
    --定义你的变量
    declare @var numeric
    select @var=0.0
    while @var<=1  --循环你的变量
    --执行你的语句
    insert into #lfy2
    select sum(price) as aa,id as bb from #lfy where id>=@var group by id
    --这里应该有一个把你的比较结果存入临时表的动作
    select @var=@var+0.01
    wend
    --这里应该有一个查询结果临时表的动作
    select * from #lfy2 order by id