编辑sql列中的一些值



我有一个表:

id 参数
1 p1 值1
1 p2 值2
1 p3 值3
1 p4 值4
2 p1 值10
2 p2 值20
2 p5 值50
3 p1 值100
3 p2 值200
3 p4 值400
4 p1 值11
4 p2 值12
4 p3 值12

如何从p2中只取3个值的字母,并将其与其他值一起写入一列。

您可以在listagg():中使用条件逻辑

select listagg(case when p.param = 'p2' then substr(p.value, 1, 3) else p.value end, ',') within group (order by p.id asc)
from tab p 
where p.param in ('p1', 'p2', 'p3', 'p4') 
group by p.id;

最新更新