gpt4 book ai didi

sql - 在 Oracle SQL 中使用 group 和 listagg 跨列和行连接

转载 作者:行者123 更新时间:2023-12-04 10:47:25 27 4
gpt4 key购买 nike

我有一个像下面这样的表格,想跨列分组,然后跨行分组。
我有一个解决方案,它有点奏效,但速度很慢。有没有更有效的方法来做到这一点?

谢谢

| GROUP | VAL 1 | VAL 2 | VAL 3 | 
| A | 1 | 2 | 3 |
| A | 4 | 5 | 6 |
| B | 7 | 8 | 9 |
| C | 10 | 11 | 12 |

首选结果是
| GROUP | TEXT |
| A |123456|
| B | 789 |
| C |101112|

这是我目前拥有的,但速度非常慢。是否有跨列和行分组的替代解决方案
    select GROUP,
listagg(comments,',')
within GROUP (order by GROUP) "TEXT"
from
(select concat(val 1,concat(val 2,val 3)) as Comments, data.*
from data)
group by GROUP;

谢谢

最佳答案

使用以下查询,您将直接获得连接的列值:

SELECT
"GROUP",
LISTAGG(VAL_1 || VAL_2 || VAL_3)
WITHIN GROUP(ORDER BY VAL_1) AS "TEXT"
FROM DATA
GROUP BY "GROUP";

备注 : 不要使用oracle 保留关键字作为列名。这里 GROUP是oracle 保留关键字。

干杯!!

关于sql - 在 Oracle SQL 中使用 group 和 listagg 跨列和行连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59640312/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com