高难度查询,请高手帮忙!

DoItBetter 2004-08-18 09:35:55
一个表table1为:
编号 姓名
1 张三
2 李四
3 王五
另一个表table2(集体为table1中姓名的组合)为:
编号 集体
1 1,2
2 2,3
3 1,2,3
我如何通过查询得到下面的记录集:
编号 集体
1 张三,李四
2 李四,王五
3 张三,李四,王五

请大虾帮忙,不胜感激,谢谢!
...全文
84 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
DoItBetter 2004-08-18
  • 打赏
  • 举报
回复
邹建大哥果然高手,终于看懂了:)
非常感谢!
以后还向大哥请教!
typecode 2004-08-18
  • 打赏
  • 举报
回复
学习!
zjcxc 元老 2004-08-18
  • 打赏
  • 举报
回复
--测试

--测试数据
create table table1(编号 int,姓名 varchar(10))
insert table1 select 1,'张三'
union all select 2,'李四'
union all select 3,'王五'

create table table2(编号 int,集体 varchar(10))
insert table2 select 1,'1,2'
union all select 2,'2,3'
union all select 3,'1,2,3'
go

--创建一个查询处理函数
create function f_str(
@集体 varchar(1000)
)returns varchar(8000)
as
begin
declare @r varchar(8000)
set @r=','+@集体+','
select @r=replace(@r,','+cast(编号 as varchar)+',',','+姓名+',')
from table1
where charindex(','+cast(编号 as varchar)+',',@r)>0
return(substring(@r,2,len(@r)-2))
end
go

--调用函数实现查询
select 编号,集体=dbo.f_str(集体) from table2
go

--删除测试
drop table table1,table2
drop function f_str

/*--测试结果

编号 集体
----------- -------------------
1 张三,李四
2 李四,王五
3 张三,李四,王五

(所影响的行数为 3 行)
--*/
zjcxc 元老 2004-08-18
  • 打赏
  • 举报
回复
--创建一个查询处理函数
create function f_str(
@集体 varchar(1000)
)returns varchar(8000)
as
begin
declare @r varchar(8000)
set @r=','+@集体+','
select @r=replace(@r,','+cast(编号 as varchar)+',',','+姓名+',')
from table1
where charindex(','+cast(编号 as varchar)+',',@r)>0
return(substring(@r,2,len(@r)-2))
end
go

--调用函数实现查询
select 编号,集体=dbo.f_str(集体) from table2

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧