Макс. Дата логика не получает ожидаемую строку - PullRequest
0 голосов
/ 23 октября 2019

У меня есть этот запрос, в котором я пытаюсь выбрать строки с 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 не соответствует критериям.

...