Например: Emplid 001 наиболее эффективная датированная строка (скажем, 01/01/2013) активна и принадлежит deptid 101. Предположим, что если у него есть еще две строки с тем же deptid, скажем, одна на 12/10/2012 и 12/01/2012, Затем мне нужно получить строки от 12.01.2012. Так что это должна быть первая строка непрерывных вхождений. В случае, если у меня есть строка с 12.05.2012 с другим deptid (102), в этом случае мой запрос должен вернуть 10 /12/2012 rows, пожалуйста, помогите с этим
Как получить первое появление самой активной строки строки в таблице заданий с определенным deptid,
Ответы (2)
Хотя и не с левым соединением, здесь используется дополнительный выбор минимальной даты вступления в силу, чтобы получить нужные вам данные — трюк для получения минимального effdt по deptid заключается в том, чтобы поместить deptid в дополнительный выбор. Обратите внимание, что empl_rcd_nbr обычно используется в качестве ограничителя в подвыборе (и job2.empl_rcd_nbr — job.empl_rcd_nbr), но у вас его не было в исходном выборе. Если вы получаете повторяющиеся строки, проверьте значение 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
Чтобы достичь того, что вам нужно, вам нужно будет выбрать строку min (effdt) с deptid, совпадающую с deptid текущей строки max (effdt), а также не должно существовать строки > min (effdt) с deptid ‹ > deptid строки min(effdt).
Запрос, удовлетворяющий вышеуказанным условиям, должен помочь вам с набором результатов.