我现有数据库如下
ID  地点   气温
1   上海   30
2         31 
3         31
4   北京   25
5         26能用什么语句实现下面内容ID  地点   气温
1   上海   30
2   上海   31 
3   上海   31
4   北京   25
5   北京   26

解决方案 »

  1.   


    declare @t table(id int,地点 varchar(10),气温 int)
    insert @t
    select 1,'上海',30
    union all
    Select 2,null,31
    union all
    Select 3,null,31
    union all
    Select 4,'北京',25
    union all
    Select 5,null,26Select id,isnull(地点,(Select top 1 地点 from @t where 地点 is not null and id<a.id order by id desc)),气温 from @t a
      

  2.   


    drop table tb create table tb (tid int ,address varchar(10),qiwen varchar(4) )insert into tb (tid,address,qiwen) values (1,'上海','30')
    insert into tb (tid,address,qiwen) values (2,'','30')
    insert into tb (tid,address,qiwen) values (3,'','30')
    insert into tb (tid,address,qiwen) values (4,'','30')
    insert into tb (tid,address,qiwen) values (5,'','30')
    insert into tb (tid,address,qiwen) values (6,'北京','30')
    insert into tb (tid,address,qiwen) values (7,'','30')
    insert into tb (tid,address,qiwen) values (8,'','30')
    insert into tb (tid,address,qiwen) values (9,'天津','30')
    insert into tb (tid,address,qiwen) values (10,'','30')
    insert into tb (tid,address,qiwen) values (11,'','30')
    insert into tb (tid,address,qiwen) values (12,'','30')
    select * from  tb 
    /********** 下面程序  *******************/
    /***********开始 ****************/declare @tid int
    set @tid=2
    while @tid<= 12  -- 12是数据表里ID的最大值。
    begin
     if exists ( select tid from tb  where address='' and tid=@tid )
       update tb set tb.address=a.address from tb ,(select tid,address from tb  where  tid=@tid-1) a 
          where tb.tid=@tid
     set @tid=@tid+1
    end/*************结束 *******************/
      

  3.   

    结果:
    TID---ADDRESS--QIWEN
    1 上海 30
    2 上海 30
    3 上海 30
    4 上海 30
    5 上海 30
    6 北京 30
    7 北京 30
    8 北京 30
    9 天津 30
    10 天津 30
    11 天津 30
    12 天津 30