首页 > 解决方案 > SQL 查询 - 在连续行中累积连接字符串

问题描述

我是一名数据分析师,所以我编写 SQL 查询来从数据库中检索数据。我不确定到底是哪种 SQL,只是假设最标准(也不是像“DECLARE @tbl”这样的东西,也没有创建函数等)

这是我的问题。给定下表:

姓名 数字
一个 1 一个
一个 2 b
一个 3 C
一个 4 d
1 一个
2 b
3 C
4 d

我想要以下结果:(累积连接字母,按数字排序))

姓名 数字 结果
一个 1 一个 一个
一个 2 b 一,乙
一个 3 C a,b,c
一个 4 d A B C D
1 一个 一个
2 b 一,乙
3 C a,b,c
4 d A B C D

非常感谢任何帮助。非常感谢。

标签: sql

解决方案


这回答了标记为 MySQL 的问题的原始版本。

MySQL 不支持group_concat()作为窗口函数。所以子查询可能是你最好的选择:

select t.*,
       (select group_concat(t2.letter order by t2.number)
        from t t2
        where t2.name = t.name and t2.number <= t.number
       ) as letters
from t;

推荐阅读