当前位置: 代码迷 >> Sql Server >> 归并查询
  详细解决方案

归并查询

热度:90   发布时间:2016-04-27 12:12:20.0
合并查询
从TB1的到TB2的查询怎样写?
TB1[b][/b]
产品编码 中文名称 拉手 数量
TV2160YSO 两门电视柜 H001 20
BT2160YSO 床头柜 H001 10
BT2160YSO 床头柜 H002 40
ARM22160YSO 两门大衣柜 H002 10
ARM22160YSO 两门大衣柜 H004 20
ARM22160YSO 两门大衣柜 H003 10
ARM22160YSO 两门大衣柜 H005 20
BC2160YSO 行李架 H004 10

TB2[b][/b]
产品编码 中文名称 拉手 数量
TV2160YSO 两门电视柜 H001 20
BT2160YSO 床头柜 H001,H002 10,40
ARM22160YSO 两门大衣柜 H002,H004,H003,H005 10,20,10,20
BC2160YSO 行李架 H004 10


------解决方案--------------------
--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 行)*/
  相关解决方案