У меня есть таблица, в которой есть серия событий, основанных на времени, каждая связанная с датой начала и окончания. Для последнего (текущего) события конечная дата равна NULL. Я пытаюсь свернуть дублирующие строки и показывать только самую раннюю дату начала и самую последнюю дату окончания. Когда NULL находится в поле даты, эта строка игнорируется. Я могу фикчировать значение даты окончания с помощью NVL(), но это приведет к тому, что логика внешнего интерфейса будет искать и заменять это значение.
Есть ли способ заставить max() сортировать NULL как высокий?
CREATE TABLE CONG_MEMBER_TERM
(
  CONG_MEMBER_TERM_ID  NUMBER(10)               NOT NULL,
  CHAMBER_CD           VARCHAR2(30 BYTE)        NOT NULL,
  CONG_MEMBER_ID       NUMBER(10)               NOT NULL,
  STATE_CD             CHAR(2 BYTE)             NOT NULL,
  DISTRICT             NUMBER(10),
  START_DT             TIMESTAMP(6) WITH TIME ZONE,
  END_DT               TIMESTAMP(6) WITH TIME ZONE
)
Этот запрос работает, но падает строка, где конечная дата имеет значение NULL.
select CONG_MEMBER_ID, 
       district, 
       min(start_dt), 
       max(end_dt)
  from CONG_MEMBER_TERM
 where CONG_MEMBER_ID = 1716
 group by CONG_MEMBER_ID, district;
Этот запрос исправляет это, но теперь у меня есть значение даты окончания "dummy" (9/9/9999). Что-то, чего я бы не хотел кодировать.
select CONG_MEMBER_ID, 
       district, 
       min(start_dt), 
       max(nvl(end_dt, to_date('9/9/9999', 'mm/dd/yyyy')))
  from CONG_MEMBER_TERM
 where CONG_MEMBER_ID = 1716
 group by CONG_MEMBER_ID, district;
Спасибо.