数据表如下所示,要更新的列为第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 @[email protected]+','+规格 from 表 where [email protected]
return @result
end
------解决方案--------------------
- SQL code
--sql2005update tb set 规格列表=t.规格列表from(select 产品编码,规格列表=stuff((select '/'+规格 from tb where 产品编码=t.产品编码 for xml path('')),1,1,'')from tb t group by 产品编码) twhere tb.产品编码=t.产品编码go--sql2000if 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 [email protected] return @S end go update tb set 规格列表=dbo.F_Str(产品编码)go