sql(红移)concat一个id下的多行

0wi1tuuw  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(389)

我的表中有3列

Products (product_id, product_detail_name, product_detail_value)

对于每个产品,我希望其所有详细信息都放在一个单元格中,即采用以下格式:

product_id, concatenated_values
tv6aics1

tv6aics11#

使用字符串聚合函数 listagg() :

select product_id, listagg(product_detail_value) product_details
from mytable
group by product_id

或者如果你想看到逗号分隔的结果 'name: value' 成对,然后:

select 
    product_id, 
    listagg(product_detail_name || ': ' || product_detail_value) product_details
from mytable
group by product_id
``` `listagg()` 还支持 `order by` 条款(带 `within group` 语法),这在文档中有描述。
voase2hg

voase2hg2#

您还可以使用 LISTAGG 定义分隔符。

Select product_id,
Listagg(product_detail_name || ':' || product_detail_value, ' ,') p_details
from mytable
Group By product_id;

相关问题