[英]how to combine multiple rows into one row?
My table:我的表:
id val
--------
a 1
a 2
a 3
b 7
b 8
b 9
b 10
What i want to get is:我想得到的是:
id val1 val2 val3 val4
--------------------------
a 1 2 3 null
b 7 8 9 10
Is there any simple way for this?有什么简单的方法吗?
If you are using MySQL 8+, then ROW_NUMBER
combined with pivoting logic provides one way:如果您使用的是 MySQL 8+,那么
ROW_NUMBER
结合透视逻辑提供了一种方法:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY id ORDER BY val) rn
FROM yourTable
)
SELECT
id,
MAX(CASE WHEN rn = 1 THEN val END) AS val1,
MAX(CASE WHEN rn = 2 THEN val END) AS val2,
MAX(CASE WHEN rn = 3 THEN val END) AS val3,
MAX(CASE WHEN rn = 4 THEN val END) AS val4
FROM cte
GROUP BY
id;
Not quite the same output, but worth considering:不完全相同的输出,但值得考虑:
SELECT id, GROUP_CONCAT(val)
FROM tbl GROUP BY id;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.