Oracle sql使用子查询将多行结果分组为一行

Posted

技术标签:

【中文标题】Oracle sql使用子查询将多行结果分组为一行【英文标题】:Oracle sql using subquery to group multiple row result into one row 【发布时间】:2020-03-09 13:06:01 【问题描述】:

我正在使用这里有人帮助的 LISTAGG,但在选择了几个字段后,我开始收到 ORA 错误。我宁愿使用 Oracle 子查询将多行结果分组为一行。过去我在sqlserver中使用STUFF来做这个,我在Oracle上怎么做。

我有以下问题

select d.id, d.name, d.date_sale, d.address, d.city, d.state, d.zipcode, d.description, d.explanation, d.received_date, 
       SELECT (dd.my_id, dd.customer_name, dd.category, dd.transaction_date, ';' 
       ) AS GROUPED_COLUMNS
from table1 d
left join table2 dd on d.id = dd.my_id
where d.id =1 and d.isActive =1

【问题讨论】:

【参考方案1】:

你可以这样做:

select d.* 
       (select list_agg(dd.my_id || dd.customer_name || dd.category || dd.transaction_date, ';') within group (order by transaction_date)
        from table2 dd
        where d.id = dd.my_id
       ) AS GROUPED_COLUMNS
from table1 d
where d.id = 1 and d.isActive = 1

【讨论】:

以上是关于Oracle sql使用子查询将多行结果分组为一行的主要内容,如果未能解决你的问题,请参考以下文章

求助,oracle多行数据合并成一行

求助,oracle多行数据合并成一行

oracle 一行转多行

Oracle-查询,,..

如何用sql语句将多行合并成一行

sql 将查询结果为多行一列合并为一行一列