我有两列的表格

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;


mysql - 如何在Oracle中获得相似的值(value)-LMLPHP

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/

10-11 22:20