大家好我有一个表有两个列我希望在不同列中显示第2列数据没有什么是修复每个东西都是动态的,就像基于行的列创建一样
表1
id col1 col2
1 x aa
2 x bb
3 x cc
4 y ww
5 y ee
6 z hh
7 z tt
8 z uu
9 z pp
10 z oo
我想要这种格式的table1数据
id val1 val2 val3 val4 val5 val6
1 x aa bb cc null null
2 y ww ee null null null
3 z hh tt uu pp oo
任何人都可以帮帮我 我怎么能在mysql中做到这一点
答案 0 :(得分:0)
这个结果:
| ID | VAL1 | VAL2 | VAL3 | VAL4 | VAL5 | VAL6 |
|----|------|------|------|--------|--------|--------|
| 1 | x | aa | bb | cc | (null) | (null) |
| 4 | y | ww | ee | (null) | (null) | (null) |
| 6 | z | hh | tt | uu | pp | oo |
来自此查询:
SELECT
MIN(id) AS id
, col1 AS val1
, MAX(CASE WHEN colno = 1 THEN col2 END) AS val2
, MAX(CASE WHEN colno = 2 THEN col2 END) AS val3
, MAX(CASE WHEN colno = 3 THEN col2 END) AS val4
, MAX(CASE WHEN colno = 4 THEN col2 END) AS val5
, MAX(CASE WHEN colno = 5 THEN col2 END) AS val6
FROM (
SELECT
@row_num :=IF(@prev_value = t.col1, @row_num + 1,1) AS colno
, t.id
, t.col1
, t.col2
, @prev_value := t.col1 as pv
FROM Table1 t
CROSS JOIN(SELECT @row_num := 1 x, @prev_value :='' y) vars
ORDER BY t.col1, t.id ASC
) sq
GROUP BY
col1
ORDER BY
col1
;
但是你应该注意到,像这样的网站不是我们只是为你咳嗽完成工作的地方。你应该至少展示你尝试过的东西。声称紧迫感并没有帮助,那些提供答案的人也有工作要做,这完全是自愿的。
请准备好您的下一个问题,并提供一些研究和尝试查询的证据。