如何写这个更新语句?
数据表如下所示,要更新的列为第3列(规格列表),目的就是将相同“产品编码”的“规格”合并到“规格列表”
产品编码 规格 规格列表
40001848 15*60*4 15*60*4/18*50*4/20*50*4
40001848 18*50*4 15*60*4/18*50*4/20*50*4
40001848 20*50*4 15*60*4/18*50*4/20*50*4
40001857 100*40 100*40/120*40
40001857 120*40 100*40/120*40
备注:一个“产品编码”可能有1-10个规格,但规格不重复。
------解决方案--------------------写个自定义函数,拼起来就行了
类似
create function dbo.f_get(@code varchar(800))
returns varchar(8000)
as
begin
declare @result varchar(8000)
set @result=''
select @result=@result+','+规格 from 表 where 产品编码=@code
return @result
end
------解决方案--------------------SQL code
--sql2005
update tb set 规格列表=t.规格列表
from
(
select 产品编码,
规格列表=stuff((select '/'+规格 from tb where 产品编码=t.产品编码 for xml path('')),1,1,'')
from tb t group by 产品编码
) t
where tb.产品编码=t.产品编码
go
--sql2000
if object_id('F_Str') is not null
drop function F_Str
go
create function F_Str(@Col int)
returns nvarchar(100)
as
begin
declare @S nvarchar(100)
select @S=isnull(@S+',','')+规格 from tb where 产品编码=@Col
return @S
end
go
update tb set 规格列表=dbo.F_Str(产品编码)
go