我在一個表report里面有一些記錄

rifnxa 2004-05-01 08:53:50
我在一個表report里面有一些記錄
字段:a,b,c,d,e
我想更新表中的一些記錄
當d,e字段為空時,我想用表中的其它不為空的記錄填充
條件是填充的記錄的b,c字段与被填充記錄的b,c字段相等.
再就是符合填充條件的記錄有可能有多條.
不知怎樣寫請指教.
...全文
40 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
internetcsdn 2004-05-01
  • 打赏
  • 举报
回复
--再加一条记录测试.
create table t1 (aa varchar(10),bb varchar(10))
insert t1
select '10','100'
union all select '10',''
union all select '10','300'
union all select '20','200'
union all select '20',''

select * from t1



create function get_bb(@aa varchar(10))
returns varchar(10)
as
begin
declare @re varchar(10)
select @re=
--select top 1
bb from t1 where bb<>'' and aa=@aa
return @re
end

update t1
set bb=dbo.get_bb(aa)
where bb=''

select * from t1

--
drop table t1

drop function get_bb
/**
更新前
aa bb
---------
10 100
10
10 300
20 200
20

更新后
aa bb
---------
10 100
10 300
10 300
20 200
20 200



**/
internetcsdn 2004-05-01
  • 打赏
  • 举报
回复
try
--当空值为''

create table t1 (aa varchar(10),bb varchar(10))
insert t1
select '10','100'
union all select '10',''
union all select '10','300'
union all select '20','200'

select * from t1

drop table t1

create function get_bb(@aa varchar(10))
returns varchar(10)
as
begin
declare @re varchar(10)
select @re=
--select top 1
bb from t1 where bb<>'' and aa=@aa
return @re
end

update t1
set bb=dbo.get_bb(aa)
where bb=''

--
drop table t1

drop function get_bb
internetcsdn 2004-05-01
  • 打赏
  • 举报
回复
楼主的意思是以相同字段不同记录的值来UPDATE
set d=b,e=b
是不同字段的值了,
这不对吧
homeness 2004-05-01
  • 打赏
  • 举报
回复
以上只适合单一记录

如果是多条记录,应该还有其他条件吧
internetcsdn 2004-05-01
  • 打赏
  • 举报
回复
如果是"再就是符合填充條件的記錄有可能有多條"
又怎样处理啊?








homeness 2004-05-01
  • 打赏
  • 举报
回复
update report
set d=b,e=b
where d is null and e is null

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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