0

例如:Emplid 001 最有效的日期行(例如 01/01/2013 )处于活动状态并且属于部门 ID 101。假设如果他之前还有两行具有相同部门 ID 的行,例如在 2012 年 10 月 12 日和 2012 年 1 月 12 日,然后我需要检索 01/12/2012 行。所以它应该是连续出现的第一行,如果我有 05/12/2012 的行和其他 deptid (102),在这种情况下,我的查询应该返回 10 /12/2012 行,请对此提供帮助

4

2 回答 2

0

虽然没有左连接,但它使用最小生效日期的子选择来获取您需要的数据 - 通过 deptid 获取最小 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
于 2013-01-17T04:58:33.547 回答
0

为了达到您的需要,您必须选择与当前 max(effdt) 行的 deptid 相同的 min(effdt) 行,并且不应该存在行 > min(effdt) 的 deptid < > min(effdt) 行的 deptid。

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

于 2013-03-03T05:47:15.907 回答