首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

怎么写这个更新语句

2012-08-16 
如何写这个更新语句?数据表如下所示,要更新的列为第3列(规格列表),目的就是将相同“产品编码”的“规格”合并

如何写这个更新语句?
数据表如下所示,要更新的列为第3列(规格列表),目的就是将相同“产品编码”的“规格”合并到“规格列表”

产品编码规格规格列表
4000184815*60*415*60*4/18*50*4/20*50*4
4000184818*50*415*60*4/18*50*4/20*50*4
4000184820*50*415*60*4/18*50*4/20*50*4
40001857100*40100*40/120*40
40001857120*40100*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
--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 产品编码=@Col    return @S end go update tb set 规格列表=dbo.F_Str(产品编码)go 

热点排行