我有下表:
ID Status Datestamp
241112069 Stop 6/15/2016 16:46
241112069 Start 6/15/2016 16:28
241108880 Stop 6/15/2016 15:42
241105741 Finish 6/15/2016 17:58
241105741 Start 6/15/2016 15:24
241105741 Stop 6/15/2016 15:24
241105111 Stop 6/15/2016 15:31
241105111 Stop 6/15/2016 15:31
241105111 Start 6/15/2016 15:31
241105110 Stop 6/15/2016 15:31
241105110 Start 6/15/2016 15:31
241105110 Stop 6/15/2016 15:31
241105109 Stop 6/15/2016 15:31
241105109 Stop 6/15/2016 15:31
241103498 Stop 6/15/2016 15:12
241103498 Start 6/15/2016 15:12
241102948 Stop 6/15/2016 15:10
241102380 Stop 6/15/2016 15:07
241101836 Stop 6/15/2016 15:03
241101836 Start 6/15/2016 15:03
241101835 Stop 6/15/2016 15:03
241101835 Start 6/15/2016 15:03
241101537 Finish 6/15/2016 17:55
241101537 Stop 6/15/2016 15:02
241101537 Start 6/15/2016 15:02
241097936 Stop 6/15/2016 14:54
241097936 Finish 6/15/2016 15:16
241097936 Start 6/15/2016 14:44
我尝试编写一个基本上返回不同ID的select查询,然后是三个包含每个状态(start,stop,finish)日期戳的新列。把我的头围绕着箱子,子查询等,但没有得到我想要的结果。我会在Excel中使用INDEX / MATCH,但这个数据库是巨大的。
警告:
感谢任何帮助。
答案 0 :(得分:0)
可能是一些内部联接
select a.id, min(a.datestamp) as start, min(b.datestamp) as stop, min( c.datestamp ) as finish
from my_table as a
inner join my_table as b on a.id = b.id and b.status = 'stop'
inner join my_table as c on a.id = c.id and c.status = 'Finish'
where a.status = 'Start';
group by a.id