当前位置: 代码迷 >> Sql Server >> 怎么写这个更新语句
  详细解决方案

怎么写这个更新语句

热度:66   发布时间:2016-04-27 11:54:19.0
如何写这个更新语句?
数据表如下所示,要更新的列为第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
  相关解决方案