如何在这样的一张桌子上组合2个选择?
表T1:
id | status | ts
1 | 0 |2019-02-22 00:00:00
2 | 0 |2019-02-22 00:00:00
3 | 0 |2019-02-22 00:00:00
1 | 1 |2019-02-22 01:00:00
3 | 1 |2019-02-22 01:30:00
1 | 0 |2019-02-22 02:00:00
3 | 0 |2019-02-22 03:00:00
我想为每个ID找到status = 0
和status = 1
的最后一个值
1 | 0 |2019-02-22 02:00:00 with 1 | 1 |2019-02-22 01:00:00
2 | 0 |2019-02-22 00:00:00
3 | 0 |2019-02-22 03:00:00 with 3 | 1 |2019-02-22 01:30:00
我尝试过:
SELECT id, status, MAX(ts)
from T1
where status = 1 Union SELECT id, status, MAX(ts) from T1 where status = 0
但不行...:o(
也许可以为每个ID计算两种变化状态之间的时差...
答案 0 :(得分:1)
有条件的聚合应该达到目的:
SELECT
id,
MAX(CASE WHEN status = 0 THEN ts END) ts_0,
MAX(CASE WHEN status = 1 THEN ts END) ts_1
FROM T1
GROUP BY id
| id | ts_0 | ts_1 |
| --- | ------------------- | ------------------- |
| 1 | 2019-02-22 02:00:00 | 2019-02-22 01:00:00 |
| 2 | 2019-02-22 00:00:00 | |
| 3 | 2019-02-22 03:00:00 | 2019-02-22 01:30:00 |