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