Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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 - Fatal编程技术网

Mysql 使用行数据作为列名创建视图

Mysql 使用行数据作为列名创建视图,mysql,sql,Mysql,Sql,我有一个如下所示的SQL表: --------------------------- | Timestamp | Value | Name| --------------------------- | 12345678 | 2 | abc | --------------------------- | 12345678 | 3 | abc | --------------------------- | 78910111 | 4 | cde | -----------

我有一个如下所示的SQL表:

---------------------------
| Timestamp | Value | Name|
---------------------------
| 12345678  | 2     | abc |
---------------------------
| 12345678  | 3     | abc |
---------------------------
| 78910111  | 4     | cde |
--------------------------
| 56789101  | 1     | abc |
---------------------------
| 56789101  | 2     | cde |
---------------------------
我需要把它转换成这样的东西:

-------------------------
| Timestamp | abc | cde |
-------------------------
| 12345678  |  5  |  0  |
-------------------------
| 56789101  |  1  |  2  |
-------------------------
| 78910111  |  0  |  4  |
-------------------------
其中,上表中的值是特定名称在特定时间戳的总和
下表中的名称未知,可以是动态的。我需要一个SQL查询来执行此操作。

您可以尝试以下查询:-

SELECT timestamp, SUM(CASE WHEN name = 'abc' THEN VALUE ELSE 0 END) AS abc,
SUM(CASE WHEN name = 'cde' THEN VALUE ELSE 0 END) AS cde
FROM tab
GROUP BY timestamp;
下面是SQL小提琴


找到了一篇相关文章,提供了一些答案:如果表中有1000+个名称,该怎么办?同时需要注意列行的上限。如果这不是一个真正的问题(您将拥有少于1000个列),并且您希望动态地执行此操作,那么您需要查看动态SQL(对于SQL Server)PL/SQL(对于Oracle)等。您使用的是什么系统?可能与此内容的投票人重复?这些名称事先不知道,可能超过2个。