У меня есть таблица EmpDept, в которой хранится история назначений сотрудников в другой отдел.
RECNO EMPNO DEPTNO EFFECTIVEDATE
2051 J000012 1 2011-09-16
7322 J000012 3 2018-09-07
2055 J000016 1 2013-05-16
7312 J000016 3 2018-07-09
7320 J000016 3 2018-09-07
7313 J000016 1 2018-09-09
7316 J000016 1 2018-09-15
7390 J000040 2 2017-05-10
7391 J000040 1 2018-09-09
7392 J000040 5 2018-09-10
8912 J000039 1 2018-09-11
Если сегодняшняя дата '2018-09-12', параметр @DeptNo = 1, ожидаемый результат:
RECNO EMPNO DEPTNO EFFECTIVEDATE
8912 J000039 1 2018-09-11
7313 J000016 1 2018-09-09
Поскольку только EMPNO = J000039 и J000016 имеют ЭФФЕКТИВНУЮ ДАТУ меньшебольше или равно '2018-09-12', другие записи, дата которых меньше или равна сегодняшней дате, принадлежат другому DeptNo.
Из данной записи таблицы есть 4 разных EMPNO, имеющих DEPTNO =1 это (J000012, J000016, J000039, J000040).Если необходимо выполнить запрос, чтобы отобразить его уникальную запись, в которой EFFECTIVEDATE <= GETDATE () ниже приведены результаты: </p>
SELECT TOP 1 *
FROM EMPDEPT
WHERE EMPNO='J000012' AND
EFFECTIVEDATE <=GETDATE()
ORDER BY EFFECTIVEDATE DESC
SELECT TOP 1 *
FROM EMPDEPT
WHERE EMPNO='J000016' AND
EFFECTIVEDATE <=GETDATE()
ORDER BY EFFECTIVEDATE DESC
SELECT TOP 1 *
FROM EMPDEPT
WHERE EMPNO='J000039' AND
EFFECTIVEDATE <=GETDATE()
ORDER BY EFFECTIVEDATE DESC
SELECT TOP 1 *
FROM EMPDEPT
WHERE EMPNO='J000040' AND
EFFECTIVEDATE <=GETDATE()
ORDER BY EFFECTIVEDATE DESC
Вывод соответственно:
RECNO EMPNO DEPTNO EFFECTIVEDATE
7322 J000012 3 2018-09-07
RECNO EMPNO DEPTNO EFFECTIVEDATE
7313 J000016 1 2018-09-09
RECNO EMPNO DEPTNO EFFECTIVEDATE
8912 J000039 1 2018-09-11
RECNO EMPNO DEPTNO EFFECTIVEDATE
7392 J000040 5 2018-09-10
На основании этогоРезультаты, возвращаясь к требованиям, Ниже приведены выходные данные, потому что это только записи, принадлежащие DEPTNO = 1, для которых EFFECTIVEDATE равен <= GETDATE (), для других EMPNO последние DEPTNO не равны 1. </p>
RECNO EMPNO DEPTNO EFFECTIVEDATE
7313 J000016 1 2018-09-09
8912 J000039 1 2018-09-11