减少并合并重复的行

时间:2010-07-20 08:57:43

标签: sql-server-2005

我有一张包含以下采样数据的表格:

Name    Color

Alice   Green
Bob     Black
Chris   Green
Chris   Black     
David   Red
Peter   Blue
Simon   Blue
Simon   Red
Simon   Green

最终,我希望通过合并Color列来缩小表格,如:

Name    Color

Alice   Green
Bob     Black
Chris   Green, Black
David   Red
Peter   Blue
Simon   Blue, Red, Green

这样Name就可以变得独一无二了。

该表没有PRIMARY KEY,我使用ROW_NUMBER创建一个新列来区分重复但不知道下一步该做什么。:

rownumber    Name    Color

1            Alice   Green
1            Bob     Black
1            Chris   Green
2            Chris   Black     
1            David   Red
1            Peter   Blue
1            Simon   Blue
2            Simon   Red
3            Simon   Green

2 个答案:

答案 0 :(得分:1)

不要这样做。相反,将表格进一步标准化为例如一个Person,Preference和一个Color表(其中Preference,如果这是该关系的正确名称,则具有Person和Color的外键)。这样,您可以避免出现不一致的风险(如果您愿意,可以将人名称设为唯一,但使颜色名称唯一)。

编辑:如果你从连接查询中得到这个,我会假设数据是合理一致的,所以规范化不是问题。是否可以将联接查询更改为名称上的GROUP?真的比围绕结果集清理干净得多!

答案 1 :(得分:0)

我采用了here

方法

使用表变量将临时结果集保存为工作(hack)。

排序!