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