我有两列的表格
Col1 Col2
A 1
A 2
A 3
B 1
B 2
B 3
我需要的输出是这样的
Col1 Col2
A 1
A 1,2
A 1,2,3
B 1
B 1,2
B 1,2,3
先感谢您。
最佳答案
这是一个适用于MySQL的解决方案。它在select子句中使用相关的子查询将Col2
值分组在一起。逻辑是,对于共享相同Col1
值的给定记录组,我们仅汇总小于或等于当前行的值。
SELECT
Col1,
(SELECT GROUP_CONCAT(t2.Col2 ORDER BY t2.Col2) FROM yourTable t2
WHERE t2.Col2 <= t1.Col2 AND t1.Col1 = t2.Col1) Col2
FROM yourTable t1
ORDER BY
t1.Col1,
t1.Col2;
Demo
这是Oracle中的相同查询:
SELECT
Col1,
(SELECT LISTAGG(t2.Col2, ',') WITHIN GROUP (ORDER BY t2.Col2) FROM yourTable t2
WHERE t2.Col2 <= t1.Col2 AND t1.Col1 = t2.Col1) Col2
FROM yourTable t1
ORDER BY
t1.Col1,
t1.Col2;
Demo
请注意,唯一真正的变化是用
LISTAGG
代替GROUP_CONCAT
。关于mysql - 如何在Oracle中获得相似的值(value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55321465/