You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按列拼接PostgreSQL记录,限制最多拼接3条

PostgreSQL 分组拼接记录(每组最多3条)

要实现按Column A分组,将Column B的内容拼接且每组最多包含3条记录的需求,可以结合窗口函数和字符串聚合函数完成,具体SQL语句如下:

WITH ranked_data AS (
    SELECT
        "Column A",
        "Column B",
        ROW_NUMBER() OVER (PARTITION BY "Column A" ORDER BY "Column B") AS row_num
    FROM your_table_name
)
SELECT
    "Column A",
    STRING_AGG("Column B", ', ') AS "Column B"
FROM ranked_data
GROUP BY "Column A", FLOOR((row_num - 1) / 3)
ORDER BY "Column A", FLOOR((row_num - 1) / 3);

代码说明

  1. 窗口函数编号:用ROW_NUMBER()给每个Column A分组内的记录按Column B排序并分配行号,保证记录顺序稳定。
  2. 划分批次:通过FLOOR((row_num - 1)/3)计算记录所属批次,每3条记录为一个批次(行号1-3属批次0,4-6属批次1,以此类推)。
  3. 分组拼接:按Column A和批次分组,使用STRING_AGG()将同批次的Column B内容用, 拼接成字符串。

测试示例

假设表名为test_table,先插入示例数据:

CREATE TABLE test_table ("Column A" TEXT, "Column B" TEXT);
INSERT INTO test_table VALUES
('Numbers', 'One'),
('Numbers', 'Two'),
('Numbers', 'Three'),
('Alphabets', 'A'),
('Alphabets', 'B'),
('Alphabets', 'C'),
('Alphabets', 'D');

执行查询后,将得到期望结果:

Column AColumn B
NumbersOne, Two, Three
AlphabetsA, B, C
AlphabetsD

内容的提问来源于stack exchange,提问作者technoob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 21:35:24