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 通过评估具有两种类型条目的 ID 过滤查询结果
Python sqlite3 SQL查询获取具有最新日期但每个唯一列限制的所有条目