更新问题求SQL

mabailin 2012-02-05 09:19:35
id grp a
1 A 100
2 A 100
3 A
4 B 20
5 B
6 C 50
7 C
8 C
9 C 50
10 D
11 D 60
12 D
13 E 300
14 E 300
15 E 300


有这样一个表,id为主键grp为分组号,对于每个分组a列都应该有相同的值,但是现在有一些组中a列的值缺失了,需要参照已有的数据更新该表,填充a列的值,以下为要求的结果
id grp a
1 A 100
2 A 100
3 A 100
4 B 20
5 B 20
6 C 50
7 C 50
8 C 50
9 C 50
10 D 60
11 D 60
12 D 60
13 E 300
14 E 300
15 E 300

...全文
37 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuanzhang5687 2012-02-05
  • 打赏
  • 举报
回复
楼主结贴率老NB了
 

create table tb
(
id int,
grp nvarchar(2),
a int
)
insert into tb values(1,'A',100)
insert into tb values(2,'A',100)
insert into tb values(3,'A',null)
insert into tb values(4,'B',20)
insert into tb values(5,'B',null)
insert into tb values(6,'C',50)
insert into tb values(7,'C',null)
insert into tb values(8,'C',null)
insert into tb values(9,'C',50)
insert into tb values(10,'D',null)
insert into tb values(11,'D',60)
insert into tb values(12,'D',null)
insert into tb values(13,'E',300)
insert into tb values(14,'E',300)
insert into tb values(15,'E',300)



update t1 set t1.a = t2.a
from tb t1,tb t2
where t1.grp = t2.grp
and isnull(t2.a,0) <> 0

select * from tb
/*
id,grp,a
1,A,100
2,A,100
3,A,100
4,B,20
5,B,20
6,C,50
7,C,50
8,C,50
9,C,50
10,D,60
11,D,60
12,D,60
13,E,300
14,E,300
15,E,300

(15 行受影响)

*/
chuanzhang5687 2012-02-05
  • 打赏
  • 举报
回复
update t1 set t1.a = t2.a
from tb t1,tb t2
where t1.grp = t2.grp
and isnull(t2.a,'')<> ''

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧