【发布时间】:2019-10-26 05:02:09
【问题描述】:
我有这个
ID | Name
----+-------
31 | Abby
24 | Bruce
44 | Carl
49 | Derek
55 | Eric
81 | Fred
我想将 N 行的组连接成一行。对于 N = 3,这会给我这个
ID | Name
----------+----------------
31,24,44 | Abby,Bruce,Carl
49,55,81 | Derek,Eric,Fred
我设法生成了一行来使用 GROUP BY 和 CONCAT,但它只适用于 mysql...
SET @row_number = 0;
SELECT *, (@row_number:=@row_number + 1) AS r1, (@row_number - 1) DIV 3 AS r2 FROM table1
ID | Name | r1| r2
----+-------+---+---
31 | Abby | 1 | 0
24 | Bruce | 2 | 0
44 | Carl | 3 | 0
49 | Derek | 4 | 1
55 | Eric | 5 | 1
81 | Fred | 6 | 1
澄清:
我想要一个类似 vanilla 的 SQL 解决方案(所以它可以在 mysql、sybase、oracle 和 postgres 中工作)
我不需要任何命令,我只是想在某个时候重构原始表格
我在这个基础上没有写权限,只能读
我想连接任何类型的列(通过将它们转换为字符串)并处理 NULL
如果某些组的大小不完全是 N 也没关系(如最后一个)
【问题讨论】: