SQL匹配和合并同一表中的搜索

SQL匹配和合并同一表中的搜索,sql,sql-server,Sql,Sql Server,我有sql db(一个表),它有两个字段RDN和Rprob。我想报告来自RDN的哪些记录与来自Rprob的某个记录相匹配,并希望它搜索我拥有的所有3400条记录 数据示例: 它应该返回这样的内容:aa在1,2,3上找到bb只在1上找到,而cc只在2上找到XML路径和STUFF。下面的查询将通过RProb对RDN的不同出现进行分组和连接 declare @test table ( rdn int, rprob varchar(2) ); insert into @test values (1,

我有sql db(一个表),它有两个字段
RDN
Rprob
。我想报告来自
RDN
的哪些记录与来自
Rprob
的某个记录相匹配,并希望它搜索我拥有的所有3400条记录

数据示例:


它应该返回这样的内容:
aa
在1,2,3上找到
bb
只在1上找到,而
cc
只在2上找到
XML路径和
STUFF
。下面的查询将通过RProb对RDN的不同出现进行分组和连接

declare @test table (
rdn int,
rprob varchar(2)
);

insert into @test
values
(1, 'aa'),
(1, 'aa'),
(1, 'bb'),
(2, 'aa'),
(2, 'cc')


select  rprob + ' found in: ' + 
        stuff((
            select distinct ', ' +  cast(rdn as varchar(max))
            from @test t
            where r.rprob = t.rprob 
            for xml path(''),type).value('(./text())[1]','varchar(max)'),1,2,'') as valz 
from @test r
group by r.rprob
返回:

FoundIn
aa found in: 1, 2
bb found in: 1
cc found in: 2 
在此处了解有关XML路径的
的更多信息:

STUFF
这里:


STRING\u AGG
在vNext和Azure SQL中是新的,如果你能利用它,绝对值得一看:

Hi@WHB,我根据我的最佳猜测回答了你的问题,请在这里查找有关在本论坛或任何其他论坛上寻求SQL帮助的精彩教程:。如果你的问题结构合理,你更有可能得到答案!感谢看起来很有帮助,我们可以做一个简单的更新,让它在一个拥有近3000条记录的当前数据库中进行检查吗?我的意思是改变你的代码(插入值的块),让它在结果表上搜索,或者让它自动插入值语句来完成这项工作?是的,你可以修改这个查询以指向你的实际表。将@test
中对
的引用替换为表中的
。插入是为了在这个例子中演示。谢谢亲爱的听起来它的作品完美,请你检查我的原始数据和获得的结果为任何建议,还有一个附加的图像上的评论,如果你可以帮助!!我不知道为什么,但我无法上传我想显示给ufor xml路径(“”)、类型的2个图像。value(‘(./text())[1],‘varchar(max)’)、1,2,’)我可以知道这些值的含义吗?我指的是数字1和1,2