首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求解一个数值更新有关问题

2013-01-06 
求解一个数值更新问题一个价格表create table mon_price( monid int, price int)insert into mon_price va

求解一个数值更新问题
一个价格表
create table mon_price( monid int, price int)
insert into mon_price values(1,0)
insert into mon_price values(2,10)
insert into mon_price values(3,20)
insert into mon_price values(4,0)
insert into mon_price values(5,0)
insert into mon_price values(6,15)
insert into mon_price values(7,25)
insert into mon_price values(8,0)

逻辑:如果往后的月份,价格为0,则取上一个最近非0月份的价格

希望得到结果为
monidprice
10
210
320
420  *
520  *
615
725
825  *

求SQL语句,先谢谢各位的热心解答了求解一个数值更新有关问题
[解决办法]
SELECT 
    monid,
    price=ISNULL(NULLIF(price,0),ISNULL((SELECT TOP 1 price FROM mon_price WHERE monid<p.monid AND price>0 ORDER BY monid desc),0))
FROM mon_price p
[解决办法]
SELECT 
    monid,
    price=case price 
          when  0 then (SELECT TOP 1 price FROM mon_price WHERE monid<p.monid AND price<>0 ORDER BY monid desc) 
          else price 
          end
FROM mon_price p 

热点排行