一連の時間ベースのイベントを含むテーブルがあり、それぞれが開始日と終了日でバインドされています。最新 (現在) のイベントの場合、終了日は 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;
このクエリはそれを修正しますが、現在は「ダミー」の終了日の値 (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;
ありがとう。