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使用子查询将多行结果分组为一行的主要内容,如果未能解决你的问题,请参考以下文章