前面写以一篇关于Oracle的,由于我是玩sqlsever比较多,所以是看看sqlserver中如何处理这样的问题!
开始准备,为了方便,搞了临时表
创建临时表
create table #GNM_TABLE
(
GNM_ID int,
GNM_Name varchar(50)
)
insert into #GNM_TABLE(GNM_ID,GNM_Name)values(273,'GS')
insert into #GNM_TABLE(GNM_ID`在这里插入代码片`,GNM_Name)values(1,'AB')
insert into #GNM_TABLE(GNM_ID,GNM_Name)values(247,'ASD')
create table #WGT_TABLE
(
WGT_ID int,
WGT_GNM_Name varchar(50)
)
insert into #WGT_TABLE(WGT_ID,WGT_GNM_Name)values(276,'1,247')
insert into #WGT_TABLE(WGT_ID,WGT_GNM_Name)values(275,'1,247')
select * from #GNM_TABLE
select * from #WGT_TABLE
查出来的结果就是这样的
接下来就是把第二张表中你的值转成第一张表中的name去显示了!
select *,(select RTRIM (GNM_Name+',')
from #GNM_TABLE
where CHARINDEX(CAST(GNM_ID as varchar(10)),WGT.WGT_GNM_Name)>0 for xml path('')) from #WGT_TABLE as WGT
就这么神奇的实现了,为什么就实现了,这里有些东西不常用,for xml path 等等之类的,其实就是对象的转换,第二个表被转换成了xml 对象然后去检索在第二个表中的数据,就是这样而已!