我碰到了如下的问题,处理不了,望高手帮忙,先谢谢了
ID 村名 BBB CCC
1 关山村 1 竹林
2 NULL 5 纯林
3 欧家村 2 竹林
4 NULL 2 竹林
5 NULL 3 非林地
6 NULL 1 非林地
7 NULL 9 经灌林
8 塘口畈 7 坡耕地
……现在要转换成如下:(即:将每个村后面的记录中村名为空的都补上)ID 村名 BBB CCC
1 关山村 1 竹林
2 关山村 5 纯林
3 欧家村 2 竹林
4 欧家村 2 竹林
5 欧家村 3 非林地
6 欧家村 1 非林地
7 欧家村 9 经灌林
8 塘口畈 7 坡耕地
……
ID 村名 BBB CCC
1 关山村 1 竹林
2 NULL 5 纯林
3 欧家村 2 竹林
4 NULL 2 竹林
5 NULL 3 非林地
6 NULL 1 非林地
7 NULL 9 经灌林
8 塘口畈 7 坡耕地
……现在要转换成如下:(即:将每个村后面的记录中村名为空的都补上)ID 村名 BBB CCC
1 关山村 1 竹林
2 关山村 5 纯林
3 欧家村 2 竹林
4 欧家村 2 竹林
5 欧家村 3 非林地
6 欧家村 1 非林地
7 欧家村 9 经灌林
8 塘口畈 7 坡耕地
……
if object_id('[tb]') is not null drop table [tb]
create table [tb]([ID] int,[村名] varchar(6),[BBB] int,[CCC] varchar(6))
go
insert [tb]
select 1,'关山村',1,'竹林' union all
select 2,null,5,'纯林' union all
select 3,'欧家村',2,'竹林' union all
select 4,null,2,'竹林' union all
select 5,null,3,'非林地' union all
select 6,null,1,'非林地' union all
select 7,null,9,'经灌林' union all
select 8,'塘口畈',7,'坡耕地'update t
set 村名 = (select top 1 村名 from [tb] where id < t.id and isnull(村名,'') <> '' order by id desc)
from [tb] t
where 村名 is nullselect * from [tb]--------------------------------
ID 村名 BBB CCC
----------- ------ ----------- ------
1 关山村 1 竹林
2 关山村 5 纯林
3 欧家村 2 竹林
4 欧家村 2 竹林
5 欧家村 3 非林地
6 欧家村 1 非林地
7 欧家村 9 经灌林
8 塘口畈 7 坡耕地(8 行受影响)