Mysql如何获得与其他列组合的列表列
我有一张这样的桌子Mysql如何获得与其他列组合的列表列,mysql,sql,group-by,pivot,Mysql,Sql,Group By,Pivot,我有一张这样的桌子 +------+------+----------+ | X | Y | SAMPLE_id | +------+------+----------+ | 1.0 | 10 | 1 | | 1.0 | 20 | 2 | | 1.0 | 30 | 3 | | 1.0 | 40 | 4 | | 2.0 | 25 | 1 | | 2.0 | 26 |
+------+------+----------+
| X | Y | SAMPLE_id |
+------+------+----------+
| 1.0 | 10 | 1 |
| 1.0 | 20 | 2 |
| 1.0 | 30 | 3 |
| 1.0 | 40 | 4 |
| 2.0 | 25 | 1 |
| 2.0 | 26 | 2 |
| 2.0 | 27 | 3 |
| 2.0 | 28 | 4 |
| 3.0 | 35 | 1 |
| 3.0 | 35 | 2 |
| 3.0 | 35 | 3 |
| 3.0 | 35 | 4 |
| 4.0 | 50 | 1 |
| 4.0 | 50 | 2 |
| 4.0 | 50 | 3 |
| 4.0 | 50 | 4 |
| 5.0 | 65 | 1 |
| 5.0 | 65 | 2 |
| 5.0 | 65 | 3 |
| 5.0 | 65 | 4 |
**我需要像这样展示**
X Y_SAMPLE_ID_1 Y_SAMPLE_ID_2 Y_SAMPLE_ID_3 Y_SAMPLE_ID_4
1 10 20 30 40
2 25 26 27 28
...
..
..
虽然我尝试了各种选项,但都出现了错误,我无法按要求获取。对于固定的样本ID列表,您可以执行条件聚合:
select
x,
max(case when sample_id = 1 then y end) y_sample_id_1,
max(case when sample_id = 2 then y end) y_sample_id_2,
max(case when sample_id = 3 then y end) y_sample_id_3,
max(case when sample_id = 4 then y end) y_sample_id_4
from mytable
group by x
对于固定的样本ID列表,可以执行条件聚合:
select
x,
max(case when sample_id = 1 then y end) y_sample_id_1,
max(case when sample_id = 2 then y end) y_sample_id_2,
max(case when sample_id = 3 then y end) y_sample_id_3,
max(case when sample_id = 4 then y end) y_sample_id_4
from mytable
group by x
非常好,谢谢,对这些命令的任何解释都会对您有所帮助many@vkkindia:查询按
x
聚合;然后,每个max(…)
表达式为每个不同的sample\u id
获取y
的值。非常好,谢谢,对命令的任何解释都将对many@vkkindia:查询按x
聚合;然后,每个max(…)
表达式为每个不同的sample\u id
获取y
的值。