Oracle SQL“select”,其中1列具有组合值

时间:2014-08-29 07:04:56

标签: sql oracle select left-join

表t1:

pk_id | col1 | col2 | col3
===========================
1     | val1 | val2 | val3

表t2 :( fk_id是对pk_id的外键引用)

fk_id | col4
=============
1     | val4A
1     | val4B
1     | val4C

我的SQL查询是:

select pk_id,col1,col2,col3,col4
from t1 left join t2 on t1.pk_id=t2.fk_id;

结果是:

pk_id | col1 | col2 | col3 | col4
===================================
1     | val1 | val2 | val3 | val4A
1     | val1 | val2 | val3 | val4B
1     | val1 | val2 | val3 | val4C

但我真的想要这个结果:

pk_id | col1 | col2 | col3 | col4
===============================================
1     | val1 | val2 | val3 | val4A;val4B;val4C

如何更改'选择'用col4值实现这个结果的查询是val4A,val4B,val4C的组合值(用分号分隔)?

1 个答案:

答案 0 :(得分:2)

您可以使用LISTAGG

select pk_id,col1,col2,col3,
                    LISTAGG (t2.col4, ';') WITHIN GROUP (ORDER BY t2.col4) AS col4
from t1 left join t2 on t1.pk_id=t2.fk_id
group by pk_id, col1, col2, col3;