2015-01-26 108 views
1

我有一个rate_history表,每个员工的数据和他的工作职位的费率变化。我想在单个查询中获得每个员工的工作职位更改。所选作业是连续行中最新的更新。请注意,随着时间的推移,相同的工作职位可以重新分配给员工。MySQL Group by continuous values

id job_id updated 
1 1 01-01-2015 
2 1 01-02-2015 
3 2 01-01-2015 
4 2 01-03-2015 
5 2 01-02-2015 
6 1 01-01-2015 

的结果应该是:

id job_id updated 
1 1 01-01-2015 
3 2 01-01-2015 
6 1 01-02-2015 
+0

whya重新缺少ID 1,3和5。你需要最新的每个employess工作吗?如果没有,请问 – Santhosh 2015-01-26 20:33:45

+0

@Santhosh问题,可以请更详细的对不起,我编辑过问题。我希望每个工作职位都发生变化 – dzona 2015-01-26 20:41:26

+0

@dzona'id'是员工ID吗? – 2015-01-26 20:48:05

回答

3

好,这里是基于我对您所提供的输出理解我的小提琴链接,

您可以使用行号(不适用于MySQL,但使用环形交叉口),然后获取具有与先前记录不同的job_id的记录。

Fiddle Link

select t1.id 
    , t1.job_id 
    , t1.updatedate 
    , t2.rn as rnt2 
    from temprwithrn as t1 
    left 
    join temprwithrn as t2 
    on t1.rn = t2.rn + 1 
where t1.job_id <> t2.job_id or t2.job_id is null 
+0

我不希望使用额外的表格 – dzona 2015-01-26 22:07:46

+0

将其用作子查询 – Santhosh 2015-01-26 22:08:13

+0

您确定您的数据集能够正确表示问题吗? – Strawberry 2015-01-26 22:53:27