Sql比较逗号分隔值

Sql比较逗号分隔值,sql,sql-server-2005,Sql,Sql Server 2005,我正在寻找一种方法来比较同一单元格中的值 目前,我有一个通过查询获得的数据,其输出如下: ID|firstname|lastName|Gender|Tag 1 |Jo |Sav |b |sport,computer,sport 2 |Franck |Gag |b |climbing, swimming 3 |Oli |Dann |b |cycling,running,cycling 4 |Alyss |Baby

我正在寻找一种方法来比较同一单元格中的值

目前,我有一个通过查询获得的数据,其输出如下:

ID|firstname|lastName|Gender|Tag
1 |Jo       |Sav     |b     |sport,computer,sport
2 |Franck   |Gag     |b     |climbing, swimming
3 |Oli      |Dann    |b     |cycling,running,cycling
4 |Alyss    |Baby    |g     |make up, cycling
我只想得到在标记列中获取重复数据的人

因此,输出将如下所示:

ID|firstname|lastName|Gender|Tag
1 |Jo       |Sav     |b     |sport,computer,sport
3 |Oli      |Dann    |b     |cycling,running,cycling
提前谢谢

编辑#1:因为人们想知道我的模式如何

ID|firstname|lastName|Gender|Tag
1 |Jo       |Sav     |b     |sport
2 |Franck   |Gag     |b     |climbing
3 |Oli      |Dann    |b     |cycling
4 |Alyss    |Baby    |g     |make up
1 |Jo       |Sav     |b     |computer
1 |Jo       |Sav     |b     |sport
2 |Franck   |Gag     |b     |swimming
3 |Oli      |Dann    |b     |cycling
3 |Oli      |Dann    |b     |running
...

你可以这样做。额外的
EXISTS
子句检查具有重复的
标记的记录中是否存在
ID

SELECT  ID, firstname, lastName, Gender,
        STUFF((SELECT ',' + Tag
              FROM TableName
              WHERE ID = a.ID
              FOR XML PATH ('')) , 1, 1, '')  AS TagList
FROM    TableName AS a
WHERE   EXISTS
        (
            SELECT 1
            FROM tableName b
            WHERE b.ID = a.ID
            GROUP BY b.id, b.tag
            HAVING COUNT(*) > 1
        )
GROUP   BY ID, firstname, lastName, Gender

为什么首先要存储逗号分隔的数据?因为它已经是我得到的输出。这是我的客户想要的。停止以这种方式存储数据。认真地说,修复您的设计,这样您就可以编写正确的关系查询,而不必不断寻找繁琐和低效的解决方法。修复您的数据库设计,而不是解决此设计问题。伙计们,我可以让数据不以逗号分隔,但我需要如图所示的输出