mysql - 如何在 Oracle 中获得类似的值
问题描述
我有一个两列的表
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;
演示
这是 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;
演示
请注意,唯一真正的变化是LISTAGG
替换GROUP_CONCAT
.
推荐阅读
- vue.js - vue js同步修饰符不更新输入值
- python - 在 Python 中对具有相同列的多个 excel 文档进行聚类
- java - Mat Eclipse - 没有 GC 根的 Java 字节 2GB
- c# - 我想在子菜单中添加一个按钮
- reactjs - 在不同路线之间移动时导航到#id in react
- php - 更新数据库时,下拉菜单未在前端更新
- javascript - DOM准备好后如何获取所有表单元素?
- python - 如何从具有多个标头的熊猫数据帧中访问子标头标头
- php - “警告:mysqli::prepare(): Couldn't fetch mysqli”但是我没有这条线?
- regex - SAS 正则表达式字符串提取