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
的值。