У меня есть этот запрос, в котором я пытаюсь выбрать строки с SAVINGS_COVRG = ''
и PLAN_TYPE = '49'
, где это строка MAX EFFDT
для этих PLAN_TYPE
и EMPLID
, однако я выбираю строки, которые не являютсяMAX EFFDT
для этого PLAN_TYPE
и EMPLID
.
SELECT *
FROM PS_SAVINGS_PLAN SP
WHERE SAVINGS_COVRG = ''
AND COVERAGE_ELECT = 'E'
AND PLAN_TYPE = '49'
AND EFFDT = (SELECT MAX(D.EFFDT)
FROM PS_SAVINGS_PLAN D
WHERE D.EMPLID = SP.EMPLID
AND D.EMPL_RCD = SP.EMPL_RCD
AND D.PLAN_TYPE = SP.PLAN_TYPE
AND D.BENEFIT_NBR = SP.BENEFIT_NBR
AND D.COVERAGE_ELECT = 'E'
AND D.PLAN_TYPE = '49')
Пример вывода:
EMPLID PLAN_TYPE EFFDT COVERAGE_ELECT SAVINGS_COVRG
8675909 49 2017-06-16 E
Однако, если я сделаю запрос на открытие только для этого EMPLID
и PLAN_TYPE
вы видите, что на самом деле строка MAX EFFDT
выше, чем строка с COVERAGE_ELECT = 'E'
и SAVINGS_COVRG = ''
SELECT *
FROM PS_SAVINGS_PLAN
WHERE EMPLID = '8675309'
AND PLAN_TYPE = '49'
ORDER BY PLAN_TYPE, EFFDT
Вывод:
EMPLID PLAN_TYPE EFFDT COVERAGE_ELECT SAVINGS_COVRG
8675309 49 2017-06-16 E
8675309 49 2019-06-01 T 1
В приведенном выше примере этоEMPLID
следует отфильтровать по результатам, поскольку их строка MAX EFFDT
для Plan_Type
49 не соответствует критериям.