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

时间:2014-06-06 07:35:24

标签: mysql sql

我有一个如下的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查询来执行此操作。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下查询: -

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小提琴。

http://sqlfiddle.com/#!2/a721f4/8