我有一个两列的表格
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
请注意,唯一真正的变化是将 GROUP_CONCAT
替换为 LISTAGG
。
关于mysql - 如何在 Oracle 中获取相似的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55321465/