MySQL选择生成新列
我有一个像这样的MySQL:MySQL选择生成新列,mysql,Mysql,我有一个像这样的MySQL: +----+----------+---------+---------------------+ | id | event | seconds | date | +----+----------+---------+---------------------+ | 5 | open | 0 | 2014-10-20 16:00:00 | | 5 | assign | 5 | 2014-10
+----+----------+---------+---------------------+
| id | event | seconds | date |
+----+----------+---------+---------------------+
| 5 | open | 0 | 2014-10-20 16:00:00 |
| 5 | assign | 5 | 2014-10-20 16:00:05 |
| 5 | complete | 10 | 2014-10-20 16:00:15 |
| 5 | close | 22 | 2014-10-20 16:00:37 |
| 6 | open | 0 | 2014-10-20 17:00:00 |
| 6 | assign | 7 | 2014-10-20 17:00:07 |
+----+----------+---------+---------------------+
是否有select语句可以在不编写程序逻辑的情况下返回此语句
+----+----------+---------+-----------+---------+
| id | open | assign | complete | close |
+----+----------+---------+-----------+---------+
| 5 | 0 | 5 | 10 | 22 |
| 6 | 0 | 7 | | |
+----+----------+---------+-----------+---------+
我假设每个id都需要秒数,可以是max,min,等等
我假设每个id需要秒的总和,可以是max、min等。这是将行转换为列,我们可以进行基于案例的聚合
这是将行转换为列,我们可以进行基于案例的聚合
是的,它被称为支点。我和我自己的逻辑如此接近。。。只是没有包括总和:)是的,它被称为轴心。我是如此接近我自己的逻辑。。。只是没有包括总数:)@Radar差不多,但谁在数。@Radar差不多,但谁在数。
SELECT id,
SUM(CASE WHEN event='open' THEN seconds ELSE 0 END) as open,
SUM(CASE WHEN event='assign' THEN seconds ELSE 0 END) as assign,
SUM(CASE WHEN event='complete' THEN seconds ELSE 0 END) as complete,
SUM(CASE WHEN event='close' THEN seconds ELSE 0 END) as close
FROM t
GROUP BY id
SELECT id,
MAX( case when event ='open' then seconds end ) as open,
MAX( case when event ='assign' then seconds end ) as assign,
MAX( case when event ='complete' then seconds end ) as complete,
MAX( case when event ='close' then seconds end ) as close
FROM Table1
GROUP BY id