日期:2014-05-18 浏览次数:20519 次
create table TB(产品编码 nvarchar(20),中文名称 nvarchar(20),拉手 varchar(10),数量 int) insert into tb values('TV2160YSO' , N'两门电视柜' ,'H001', 20) insert into tb values('BT2160YSO' , N'床头柜' ,'H001', 10) insert into tb values('BT2160YSO' , N'床头柜' ,'H002', 40) insert into tb values('ARM22160YSO', N'两门大衣柜' ,'H002', 10) insert into tb values('ARM22160YSO', N'两门大衣柜' ,'H004', 20) insert into tb values('ARM22160YSO', N'两门大衣柜' ,'H003', 10) insert into tb values('ARM22160YSO', N'两门大衣柜' ,'H005', 20) insert into tb values('BC2160YSO' , N'行李架' ,'H004', 10) go create function dbo.f_str1(@产品编码 varchar(20),@中文名称 varchar(20)) returns varchar(50) as begin declare @str varchar(50) select @str = isnull(@str + ',' , '') + cast(拉手 as varchar) from tb where 产品编码 = @产品编码 and 中文名称 = @中文名称 return @str end go create function dbo.f_str2(@产品编码 varchar(20),@中文名称 varchar(20)) returns varchar(50) as begin declare @str varchar(50) select @str = isnull(@str + ',' , '') + cast(数量 as varchar) from tb where 产品编码 = @产品编码 and 中文名称 = @中文名称 return @str end go --调用函数 select 产品编码 ,中文名称, 拉手 = dbo.f_str1(产品编码,中文名称) , 数量 = dbo.f_str2(产品编码,中文名称) from tb group by 产品编码,中文名称 drop function dbo.f_str1 drop function dbo.f_str2 drop table tb /* 产品编码 中文名称 拉手 数量 -------------------- -------------------- -------------------------------------------------- -------------------------------------------------- ARM22160YSO 两门大衣柜 H002,H004,H003,H005 10,20,10,20 BC2160YSO 行李架 H004 10 BT2160YSO 床头柜 H001,H002 10,40 TV2160YSO 两门电视柜 H001 20 (所影响的行数为 4 行) */