Sql server 2012 SQL group by与联合查找分隔字符串中的重复项

Sql server 2012 SQL group by与联合查找分隔字符串中的重复项,sql-server-2012,group-by,delimited-text,Sql Server 2012,Group By,Delimited Text,我在尝试解析一组数据时遇到问题,这些数据包含一个列,该列包含由;组合的1个或多个值;。下面是一个示例,请记住我没有设置此数据配置,我只需要处理它: Create Table #testData ( team varchar(20), sdate datetime, unqKeys varchar(max) ) Insert Into #testData values ('1','2/1/2017','abcd123;qazwsx123'); Insert Into #t

我在尝试解析一组数据时遇到问题,这些数据包含一个列,该列包含由;组合的1个或多个值;。下面是一个示例,请记住我没有设置此数据配置,我只需要处理它:

Create Table #testData
(
    team varchar(20),
    sdate datetime,
    unqKeys varchar(max)
)

Insert Into #testData values ('1','2/1/2017','abcd123;qazwsx123');
Insert Into #testData values ('1','2/1/2017','qweasd123');
Insert Into #testData values 
('1','3/1/2017','qweasd123;564plmnko;poilkj765');
Insert Into #testData values ('2','2/1/2017','ug56ogth4;uhntg456f');
Insert Into #testData values ('2','4/1/2017','fghrty987');
Insert Into #testData values ('2','4/1/2017','ertdfg546;werstf234;qweasd123');

Select * From #testData
我需要看到的是[team]在[unqKeys]列中有一个重复的值。我曾尝试对unqkey进行合并,但我无法将它们全部分组。我需要一种方法来为一个团队合并所有的unqkey,然后逐步检查列表中的重复项。因为这是SQL Server 2012,所以我没有split_string函数,但我确实尝试了一个,但仍然没有将它们与团队id结合起来

在上述示例中,我需要看到以下方面的积极发现:

team | dupKeys
----   -------
1      qweasd123
这是因为unqKey存在于不同团队的多个记录中

我曾尝试选择团队并合并unqKey,但由于组合的unqKey不是聚合的一部分,因此无法与group by合并,如果添加,我只会得到示例中所示的结果。我尝试使用拆分函数,但后来我失去了与团队的关联,但得到了一个包含所有unqkey的表

从@xQbert注释和链接使用的解决方案:

--Shows the data
Select * From #testData

--Showing the failure
Select Distinct b.team, b.uKey as dupKey from (
    Select a.team
          ,split.a.value('.','nvarchar(50)') as uKey
    From (
        Select team
              ,Cast('<u>' + REPLACE(unqKeys, ';','</u><u>') + '</u>' as XML) as uKey
    From #testData
    ) as a CROSS APPLY uKey.nodes ('/u') as split(a)
) as b
Group By b.team, b.uKey
Having Count(*) > 1

使用xml路径和cte来规范化数据,方法是将字符串拆分为行,然后分组并查找重复项。。。谢谢你,带我去我想去的地方!很高兴我能帮忙。有时候,这不是语法问题,只是一种方法的推动!