如何使用特定的deptid获取作业表中第一次出现的最活跃行行,

时间:2013-01-11 09:45:11

标签: peoplesoft

例如:Emplid 001最有效的日期行(比如说01/01/2013)是活跃的并且属于deptid 101.Suppose如果他之前有两个相同deptid的行,则说明2012年12月10日和01/12 / 2012,然后我需要检索01/12/2012行。所以它应该是连续出现的第一行,如果我在05/12/2012与其他deptid(102)行,在这种情况下我的查询应该返回10/12/2012行,请帮忙

2 个答案:

答案 0 :(得分:0)

虽然没有左连接,但是在最小生效日期使用子选项来获取所需的数据 - 由deptid获取min effdt的技巧是将deptid放在子选择中。请注意,empl_rcd_nbr通常在子选择(和job2.empl_rcd_nbr - job.empl_rcd_nbr)中用作限制器,但您在原始选择中没有它。如果你得到dup行,请检查你的empl_rcd_nbr值,因为它是一个主键:

select job.emplid, job.effdt, job.deptid
from ps_job job
where job.effdt = (select Min(job2.effdt) 
                   from ps_job job2
                   where job2.emplid = job.emplid
                     and job2.deptid = job.deptid)
order by job.emplid

答案 1 :(得分:0)

为了达到你所需要的,你将不得不拿起与当前max(effdt)行的deptid相同的deptid的min(effdt)行,而且,不应该存在一行>具有deptid<>的min(effdt)。 min(effdt)行的deptid。

满足上述条件的查询应该可以帮助您完成结果集。