合并查询
从TB1的到TB2的查询怎样写?
TB1[b][/b]
产品编码中文名称拉手数量
TV2160YSO两门电视柜H00120
BT2160YSO床头柜H00110
BT2160YSO床头柜H00240
ARM22160YSO两门大衣柜H00210
ARM22160YSO两门大衣柜H00420
ARM22160YSO两门大衣柜H00310
ARM22160YSO两门大衣柜H00520
BC2160YSO行李架H00410
TB2[b][/b]
产品编码中文名称拉手数量
TV2160YSO两门电视柜H00120
BT2160YSO床头柜H001,H00210,40
ARM22160YSO两门大衣柜H002,H004,H003,H00510,20,10,20
BC2160YSO行李架H00410
[解决办法]
--sql 2000用函数实现.
- SQL code
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)gocreate function dbo.f_str1(@产品编码 varchar(20),@中文名称 varchar(20)) returns varchar(50)asbegin declare @str varchar(50) select @str = isnull(@str + ',' , '') + cast(拉手 as varchar) from tb where 产品编码 = @产品编码 and 中文名称 = @中文名称 return @strendgocreate function dbo.f_str2(@产品编码 varchar(20),@中文名称 varchar(20)) returns varchar(50)asbegin declare @str varchar(50) select @str = isnull(@str + ',' , '') + cast(数量 as varchar) from tb where 产品编码 = @产品编码 and 中文名称 = @中文名称 return @strendgo--调用函数select 产品编码 ,中文名称, 拉手 = dbo.f_str1(产品编码,中文名称) ,数量 = dbo.f_str2(产品编码,中文名称)from tb group by 产品编码,中文名称drop function dbo.f_str1drop function dbo.f_str2drop table tb/*产品编码 中文名称 拉手 数量 -------------------- -------------------- -------------------------------------------------- -------------------------------------------------- ARM22160YSO 两门大衣柜 H002,H004,H003,H005 10,20,10,20BC2160YSO 行李架 H004 10BT2160YSO 床头柜 H001,H002 10,40TV2160YSO 两门电视柜 H001 20(所影响的行数为 4 行)*/