如何在Oracle 10g中根据指定列将n条记录合并为一条记录? [复制]

Posted

技术标签:

【中文标题】如何在Oracle 10g中根据指定列将n条记录合并为一条记录? [复制]【英文标题】:How to merge n records into one record based on specified column, in Oracle 10g? [duplicate] 【发布时间】:2015-08-28 14:05:02 【问题描述】:

表:

|COL_1  | COL_2  | COL_3
|------ | ------ |--------
|A      |A1      | 1
|A      |A2      | 3
|A      |A3      | 2
|B      |B1      | 2
|B      |B2      | 1

COL_3 用于订购。

我想得到这个:

A   |A1,A3,A2
B   |B2,B1

任何意见或建议将不胜感激。 谢谢。

纯 SQL 脚本,拜托。


更新 我下面的答案是针对 Oracle 11,但在 Oracle 10g 中出现错误:

ORA-00923: FROM keyword not found where expected

对于 Oracle 10g,解决方案是什么? 谢谢。

【问题讨论】:

【参考方案1】:

对于 Oracle 11,请使用:

select col_1
     , listagg(col_2, ', ') within group (order by col_3) as col_new
from tbl_tmp
group by col_1;

Run here : SQL Fiddle

Refrence:https://***.com/questions/17501418/oracle-string-aggregation

【讨论】:

以上是关于如何在Oracle 10g中根据指定列将n条记录合并为一条记录? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

oracle拨云见日第1篇之安装10g

oracle 如何查询指定记录行数的记录

Oracle Forms 10g,多次插入和更新不起作用

在 oracle 10g 中使用表分区

关于如何从 oracle10g 中提取 600 万条记录有啥建议吗?

oracle10g中,如何查询正则表达式匹配指定字符串的匹配个数?