[英]Concatenate across columns and rows using group and listagg in Oracle SQL
我有一個像下面這樣的表格,想跨列分組,然后跨行分組。 我有一個解決方案,它有點奏效,但速度很慢。 有沒有更有效的方法來做到這一點?
謝謝
| 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 的保留關鍵字。
干杯!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.