需要SQL查询以下内容:

时间:2017-04-26 10:11:37

标签: mysql sql

bug_id     ops_status   partition_date
32307107    ARCHIVED    2017-04-14
32307107    ARCHIVED    2017-04-13
32307107    ARCHIVED    2017-04-12
32307107    ARCHIVED    2017-04-11
32307107    ARCHIVED    2017-04-10
32307107    ARCHIVED    2017-04-09
32307107    ARCHIVED    2017-04-08
32307107    ARCHIVED    2017-04-07
32307107    ARCHIVED    2017-04-06
32307107    PREPUBLISH  2017-04-05
32307107    PREPUBLISH  2017-04-04
32307107    PREPUBLISH  2017-04-03
32307107    PREPUBLISH  2017-04-02
32307107    PREPUBLISH  2017-04-01
32307107    ARCHIVED    2017-03-31
32307107    ARCHIVED    2017-03-30
32307107    ARCHIVED    2017-03-29
32307107    ARCHIVED    2017-03-28
32307107    ARCHIVED    2017-03-27
32307107    ARCHIVED    2017-03-26

我需要最后一个ops_status,即ARCHIVED,当它被更新时,即" 2017-04-06" - 所以上面数据中的"32307107 ARCHIVED 2017-04-06"行。有人可以帮帮我吗。

2 个答案:

答案 0 :(得分:0)

select bug_id, ops_status, max(partition_date)
 from table1
 where ops_status = 'ARCHIVED'
 group by bug_id,ops_status

这是在SQL-Server

答案 1 :(得分:0)

如果我理解正确,您需要第一个状态更改为"已存档"对于bug_id。为此,您可以使用子查询来获取未归档的最新日期。在主查询中,您可以使用MIN查找最早的存档日期。

SELECT bug_id, ops_status, MIN(partition_date)
FROM yourTable AS a
WHERE a.partition_date > 
    (SELECT MAX(partition_date)
    FROM yourTable AS b
    WHERE b.status = 'PREPUBLISH'
      AND a.bug_id = b.bug_id)