sql - 根据条件将多条记录合并为一条
问题描述
如果多个记录中的所有其他值都相同,除了 product_code,我想将每个 product_code(逗号分隔)组合在一个条目/记录中
数据集如下所示 -
category_id subcat_id product_code customer_id quantity value
123 456 AB 111 2 1
123 456 CD 111 2 1
123 789 AB 111 2 2
123 789 CD 111 2 2
结果应该看起来像 -
category_id subcat_id product_code customer_id quantity value
123 456 AB,CD 111 2 1
123 789 AB,CD 111 2 2
解决方案
使用string_agg()
;
select category_id, subcat_id, customer_id, quantity, value,
string_agg(product_code, ',')
from t
group by category_id, subcat_id, customer_id, quantity, value;
也就是说,我推荐使用数组而不是字符串来存储这些值。
推荐阅读
- php - SEO - 友好的 URL 重定向不起作用
- variables - Robotframework,嵌套关键字中的变量
- python - 如何使用多处理 python 顺序运行多个函数?
- flutter - 如何将 Sqlite 数据库中的所有数据正确显示到 ListView.builder 中?
- sql - PostgreSQL 表达式未正确评估
- paw-app - 如何嵌套请求,以便它们在 Paw 中共享相同的身份验证配置?
- c - C 程序如何在运行时获取命令行参数?
- ios - Swift 通知未在预期日期出现
- macos - 无法将 Docker 配置为在 Catalina 上使用 Burp Suite 代理
- sql - 使用 LIKE 运算符的数据库表约束