同一个岗位,生效时间取最原始的,职级选最新的
不同岗位都取最新的就行
比如,一个人在这个岗位三年,竞升了两次,目前最新职级是a,时间是2022-12-31,但它最开始待在这个岗位的时间是2021-7-6,职级是c;所以要生效时间取2021-7-6,职级取a,搞成一条数据!
同一个岗位,生效时间取最原始的,职级选最新的
不同岗位都取最新的就行
比如,一个人在这个岗位三年,竞升了两次,目前最新职级是a,时间是2022-12-31,但它最开始待在这个岗位的时间是2021-7-6,职级是c;所以要生效时间取2021-7-6,职级取a,搞成一条数据!
为了得到这个结果,你可以考虑这样的SQL语句:
SELECT
post,
MAX(date) as date,
MAX(level) as level
FROM
table1
GROUP BY
post
这个语句会按照岗位进行分组,对于每一组,选出最新的生效时间和最新的职级。
如果你要按照人来统计,那么可以这样写
SELECT
id,
MAX(CASE WHEN level='a' THEN date ELSE null END) as date,
MAX(level) as level
FROM
table1
GROUP BY
id
这个语句会按照人进行分组,对于每一组,选出最新的生效时间和最新的职级。
这里假设表中有列为id,post,level,date,如果表中列不一样,请修改上述语句