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