Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql时间序列数据透视表_Mysql_Sql_Pivot_Pivot Table - Fatal编程技术网

mysql时间序列数据透视表

mysql时间序列数据透视表,mysql,sql,pivot,pivot-table,Mysql,Sql,Pivot,Pivot Table,我在一个表中有以下数据,需要获得一个透视表输出。我一辈子都搞不清楚这件事。提前谢谢 mysql表中的行 id, timestamp, metric, value 1, 2020-10-31 02:52:02.144030, aaaa, 3 2, 2020-10-31 02:52:02.144030, tttt, 40 3, 2020-10-31 02:52:02.144030, vvvv, 6 4, 2020-10-31 02:53:01.656349, aaaa, 3 5, 2020-10-3

我在一个表中有以下数据,需要获得一个透视表输出。我一辈子都搞不清楚这件事。提前谢谢

mysql表中的行

id, timestamp, metric, value
1, 2020-10-31 02:52:02.144030, aaaa, 3
2, 2020-10-31 02:52:02.144030, tttt, 40
3, 2020-10-31 02:52:02.144030, vvvv, 6
4, 2020-10-31 02:53:01.656349, aaaa, 3
5, 2020-10-31 02:53:01.656349, tttt, 40
6, 2020-10-31 02:53:01.656349, vvvv, 6
7, 2020-10-31 02:54:02.053597, aaaa, 3
8, 2020-10-31 02:54:02.053597, tttt, 40
9, 2020-10-31 02:54:02.053597, vvvv, 6
10, 2020-10-31 02:55:01.490467, aaaa, 3
11, 2020-10-31 02:55:01.490467, tttt, 40
12, 2020-10-31 02:55:01.490467, vvvv, 6
输出我正在寻找

timestamp, aaaa, tttt, vvvv
2020-10-31 02:52:02.144030, 3, 40, 6
2020-10-31 02:53:01.656349, 3, 40, 6
2020-10-31 02:54:02.053597, 3, 40, 6
2020-10-31 02:55:01.490467, 3, 40, 6

您可以通过使用
GROUP\u CONCAT()
CONCAT()
函数动态地旋转,例如

SET @sql = NULL;

SELECT GROUP_CONCAT(                 
             CONCAT(
                    'MAX(CASE WHEN metric = "', metric,'" THEN value END ) AS ',metric
                    )
       )
  INTO @sql
  FROM ( SELECT DISTINCT metric FROM tab) t;

SET @sql = CONCAT('SELECT timestamp,',@sql,' FROM tab GROUP BY timestamp'); 

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

考虑处理应用程序代码中的数据显示问题。我当时很忙,所以我只是在代码中完成了它。谢谢。我得坐下来想一想如何理解它。不客气@ErikSundberg