我正在从多个来源创建一个临时表,需要从中删除重复的记录。例如,我的临时表将具有以下数据:
RecordID Color
1 Black
2 Black
2 Blue
我想将RecordID
2合并为:
RecordID Color
1 Black
2 Black,Blue
答案 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";