sql db2 选择每个员工的最新条目及其以前的条目

Posted

技术标签:

【中文标题】sql db2 选择每个员工的最新条目及其以前的条目【英文标题】:sql db2 select most recent entry of each employee and their previous entry 【发布时间】:2015-08-16 13:39:50 【问题描述】:

我有一个表,其中包含每个员工的条目。每次他们换工作时,都会创建一个新条目。这是按日期完成的。所以,员工,开始日期,工作,结束日期。我正在寻找每个员工最近的工作和他们以前的工作。我可以得到最大或最近的工作,但得到以前的工作是我遇到的问题。

列标题:员工、开始日期、工作、结束日期

以下是我尝试过的:

with E as
(select
  rownum = row_number() over (partition by employee order by startdate)
,employee
,startdate
,job
,enddate
from table )
Select * 
from E
where e.rownum >1

任何帮助将不胜感激。

提前致谢。

【问题讨论】:

Db2 - Returning the top 5 of each category 的可能重复项 rownum = row_number() 是无效的 SQL。您不能在这样的 SQL 语句中分配变量。 【参考方案1】:

试试这个

with E as
(select
  rownum = row_number() over (partition by employee order by startdate desc)
,employee
,startdate
,job
,enddate
from table )
Select 
employee
,startdate
,job
,enddate
,case when  rownum =  1 then 'recent' else 'previous' End as Job_stat
from E
where e.rownum <=2

【讨论】:

就像一个后续问题一样,是否有办法只显示有工作变动的员工。并非所有员工都有工作变动 对不起,我没明白。可能是一个带有样本数据和预期输出的新问题

以上是关于sql db2 选择每个员工的最新条目及其以前的条目的主要内容,如果未能解决你的问题,请参考以下文章

Db2/sql:使用连接选择和更新最旧的条目

DB2 SQL 通过评估具有两种类型条目的 ID 过滤查询结果

SQL - 删除表条目并归档?

Python sqlite3 SQL查询获取具有最新日期但每个唯一列限制的所有条目

为每个用户选择最新条目而不使用 group by (postgres)

牛客网专题SQL206 获取每个部门中当前员工薪水最高的相关信息