Ho una tabella che contiene una serie di eventi basati sul tempo, ciascuno associato a una data di inizio e di fine. Per l'evento più recente (corrente), la data di fine è NULL. Sto cercando di comprimere le righe duplicate e mostrare solo la prima data di inizio e l'ultima data di fine. Con il NULL nel campo della data, quella riga viene ignorata. Posso inventare un valore di data di fine con NVL(), ma ciò farà sì che la logica front-end cerchi e sostituisca quel valore.Oracle SQL - max() con valori NULL
Esiste comunque la funzione max() per ordinare NULL in alto?
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
)
Questa query funziona, ma elimina la riga in cui la data di fine è 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;
Questa query correzioni, ma ora ho un "fittizio" Valore data di fine (9/9/9999). Qualcosa che preferirei non dover codificare.
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;
Grazie.
Hai un sacco di domande in cui non hai accettato una risposta, si otterrà più interesse per le vostre domande se si può tornare indietro e segnare le risposte corrette (usando il segno di spunta a sinistra della risposta). – bendataclear
Non ero nemmeno a conoscenza della funzione Accetta. Tornerà e aggiornerà alcune delle risposte più vecchie. – nibeck