从表中删除重复的行并合并数据

时间:2019-04-06 21:53:15

标签: sql

我正在从多个来源创建一个临时表,需要从中删除重复的记录。例如,我的临时表将具有以下数据:

RecordID     Color
1            Black
2            Black
2            Blue

我想将RecordID 2合并为:

RecordID     Color
1            Black
2            Black,Blue

2 个答案:

答案 0 :(得分:0)

您需要使用聚合。实际的聚合函数取决于您的RDBMS。

在MySQL中,使用GROUP_CONCAT(默认分隔符为逗号):

SELECT RecordID, GROUP_CONCAT(Color) AS Color
FROM mytable
GROUP BY RecordID

在Oracle中,使用LISTAGG

SELECT RecordID, LISTAGG(Color, ',') AS Color
FROM mytable
GROUP BY RecordID

在Postgres(> = 9.0)或SQL-Server 2017中,使用STRING_AGG

SELECT RecordID, STRING_AGG(Color, ',') AS Color
FROM mytable
GROUP BY RecordID

答案 1 :(得分:0)

如果是oracle,则:

select "RecordID",listagg("Color",',' ) WITHIN GROUP (ORDER BY "RecordID","Color" ) 
Color
FROM Table1 group by "RecordID";

http://sqlfiddle.com/#!4/abaab5/5