declare @s numeric(10,2)
set @s=0
select top 1 @s=price from tb where isnull(price,0)>0print @s

解决方案 »

  1.   

    select top 1 price from t
    order by case when name='奶油面包' then 0 
                  when charindex(name,'奶油面包')>0 then 1
                  when charindex(left(name,1),'奶油面包')>0 then 2
                  else 3
             end
      

  2.   

    select price=isnull(price,(select price=
          isnull(price,(select price from ta where name='面粉')) 
    from ta where name='面包')) 
               from ta where name='奶油面包'
      

  3.   

    抱歉哦,得补充下:1.当然希望比较通用,假如还有〔饮料>可乐>百事可乐)都在此表取饮料的价格规则亦同上。2.俺是要通过JDBC执行此查询(所以如果使用"declare ---" 好像不行,可以吗?)
      

  4.   

    select price=(case when price='' then seelct price=(case price='' then select price from itemprice where name='面粉' else price) from itemprice where name='面包' else price) from itemprice where name='奶油面包'
      

  5.   

    这种查询语句,哪里有什么通用的东西呀
    饮料>可乐>百事可乐,数据库哪里知道百事可乐属于 可乐 还是 牛奶 呀据我推测,楼主的数据库里应该还有一个分类表吧
    比如 白事可乐 属于 可乐类, 可乐 属于 饮料类如果要写个通用的,还要参考一下分类表了
      

  6.   

    建立一个价格取数顺序表,或者在原表增加一个取价顺序就可以了英文名        中文名     价格   价格顺序
    ------------- ---------- ------ ---------
    flour         面粉       1.50   1
    bread         面包       4.00   2
    milkbread     奶油面包   4.20   3取价格
    select top 1 价格 from tb 
    where isnull(价格,0)>0 and 价格顺序<=(select 价格顺序 from tb where 中文名='奶油面包')
    order by 价格顺序 desc