怎么样合并一个表里面的的多行数据(如果不重复则合并,如果重复则舍弃)?
测试数据
编号 物料类别 产品编号
1 铅笔 0001
2 铅笔 0002
3 铅笔 0001
4 钢笔 0004
5 钢笔 0005
6 钢笔 0004
7 圆珠笔 0007
8 圆珠笔 0008
9 圆珠笔 0007
等等
要求实现以下效果:
编号 物料类别 产品编号
1 铅笔 0001,0002
2 钢笔 0004,0005
3 圆珠笔 0007,0008
**我的目的是如果不重复则合并产品编号,如果重复则舍弃**
请问如何实现!!!!!???
------解决方案--------------------create table T(编号 int, 物料类别 nvarchar(10), 产品编号 char(5))
insert T select 1, '铅笔 ', '0001 '
union all select 2, '铅笔 ', '0002 '
union all select 3, '铅笔 ', '0001 '
union all select 4, '钢笔 ', '0004 '
union all select 5, '钢笔 ', '0005 '
union all select 6, '钢笔 ', '0004 '
union all select 7, '圆珠笔 ', '0007 '
union all select 8, '圆珠笔 ', '0008 '
union all select 9, '圆珠笔 ', '0007 '
create function fun(@物料类别 nvarchar(10))
returns nvarchar(200)
as
begin
declare @re nvarchar(200)
set @re= ' '
select @re=@re+产品编号+ ', ' from T where 物料类别=@物料类别 group by 产品编号
select @re=left(@re, len(@re)-1)
return @re
end
select distinct 物料类别, dbo.fun(物料类别) from T
--result
物料类别
---------- -------------------------------
钢笔 0004 ,0005
铅笔 0001 ,0002
圆珠笔 0007 ,0008
(3 row(s) affected)