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

呀!多个字段合并到一个字段

2012-05-11 
求助呀!!多个字段合并到一个字段SQL codecreate table t_source_bj (库存编号 varchar(10),名称 varchar(2

求助呀!!多个字段合并到一个字段

SQL code
create table t_source_bj (库存编号 varchar(10),名称 varchar(20),零件备注码1 varchar(20),零件备注码2 varchar(20),零件备注码3 varchar(20),零件备注码4 varchar(20),合并项 varchar(120));insert into t_source_bj values('0704008','产品1','a','b','b','c','abbc');insert into t_source_bj values('07043255','产品2','a','b','b','c','abbc');insert into t_source_bj values('0702348','产品22','a','f','b','c','afbc');insert into t_source_bj values('07432408','产品3','a','b','d','c','abdc');insert into t_source_bj values('0723438','产品0','a','c','b','c','acbc');

这里希望合并项能够显示为:通过update或者其他方式,四个零件备注码的不重复合并,如第一行的合并项显示为:abc,最后一行显示为abc....其他行业是这样的。。。。。

[解决办法]
SQL code
create table t_source_bj (库存编号 varchar(10),名称 varchar(20),零件备注码1 varchar(20),零件备注码2 varchar(20),零件备注码3 varchar(20),零件备注码4 varchar(20),合并项 varchar(120));insert into t_source_bj values('0704008','产品1','a','b','b','c',null);insert into t_source_bj values('07043255','产品2','a','b','b','c',null);insert into t_source_bj values('0702348','产品22','a','f','b','c',null);insert into t_source_bj values('07432408','产品3','a','b','d','c',null);insert into t_source_bj values('0723438','产品0','a','c','b','c',null);;with tas(select 库存编号,名称,零件备注码1 as 零件备注码 from t_source_bjunion select 库存编号,名称,零件备注码2 as 零件备注码 from t_source_bjunion select 库存编号,名称,零件备注码3 as 零件备注码 from t_source_bjunion select 库存编号,名称,零件备注码4 as 零件备注码 from t_source_bj),m as(SELECT *FROM (SELECT DISTINCT 库存编号,名称 FROM t)AOUTER APPLY(    SELECT 零件备注码= STUFF(REPLACE(REPLACE(            (   SELECT 零件备注码 FROM t N                WHERE 库存编号 = A.库存编号 and 名称=A.名称                FOR XML AUTO             ), '<N 零件备注码="', ','), '"/>', ''), 1, 1, ''))N)update t_source_bj set 合并项=零件备注码 from m where t_source_bj.库存编号=m.库存编号 and t_source_bj.名称=m.名称select * from t_source_bj/*库存编号    名称    零件备注码1    零件备注码2    零件备注码3    零件备注码4    合并项0704008    产品1    a    b    b    c    a,b,c07043255    产品2    a    b    b    c    a,b,c0702348    产品22    a    f    b    c    a,b,c,f07432408    产品3    a    b    d    c    a,b,c,d0723438    产品0    a    c    b    c    a,b,c*/
[解决办法]
SQL code
select [你要的编码] = isnull((        select s+'' from (        select s=零件备注码1 from t_source_bj b where a.库存编号=b.库存编号        union         select s=零件备注码2 from t_source_bj b where a.库存编号=b.库存编号        union        select s=零件备注码3 from t_source_bj b where a.库存编号=b.库存编号        union        select s=零件备注码4 from t_source_bj b where a.库存编号=b.库存编号        ) t    for xml path(''))    ,''),* from t_source_bj a 

热点排行