gpt4 book ai didi

MySQL 转置

转载 作者:行者123 更新时间:2023-11-29 01:50:03 25 4
gpt4 key购买 nike

大家好,新年快乐!

我有一个像这样的 Mysql 表:

date | endpoint | nb200 | nb500
d1 | toto | 11 | 12
d1 | tata | 13 | 14
d1 | tutu | 15 | 16
d2 | toto | 21 | 22
d2 | tata | 23 | 24
d2 | tutu | 25 | 26

对于每个日期,每个端点都是唯一的,因此我有一个唯一的键(日期、端点)。日期列是真实日期,但例如 d1 和 d2 应该很好。

现在,我想编写一个选择请求来显示 nb200 结果,如下所示:

date | toto | tata | tutu
d1 | 11 | 13 | 15
d2 | 21 | 23 | 25

目前,我最好的尝试是

SELECT date,
(CASE WHEN endpoint = 'toto' THEN nb200 END) AS 'toto',
(CASE WHEN endpoint = 'tata' THEN nb200 END) AS 'tata',
(CASE WHEN endpoint = 'tutu' THEN nb200 END) AS 'tutu',
FROM table;

但这不是很好,因为我得到以下信息:

date | toto| tata| tutu
d1 | 11 | |
d1 | | 13 |
d1 | | | 15
d2 | 21 | |
d2 | | 23 |
d2 | | | 25

有人知道如何做到这一点吗?

最佳答案

您需要执行条件聚合:

SELECT `date`,
MAX(CASE WHEN endpoint = 'toto' THEN nb200 END) AS 'toto',
MAX(CASE WHEN endpoint = 'tata' THEN nb200 END) AS 'tata',
MAX(CASE WHEN endpoint = 'tutu' THEN nb200 END) AS 'tutu'
FROM mytable
GROUP BY `date`

MAX 用于有选择地获取每个 endpoint 值。

Demo here

关于MySQL 转置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48093776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com