Tôi có một bảng có một chuỗi các sự kiện dựa trên thời gian, mỗi sự kiện được kết hợp với ngày bắt đầu và ngày kết thúc. Đối với sự kiện (hiện tại) gần đây nhất, ngày kết thúc là NULL. Tôi đang cố gắng thu gọn các hàng trùng lặp và chỉ hiển thị ngày bắt đầu sớm nhất và ngày kết thúc mới nhất. Với NULL nằm trong trường ngày, hàng đó bị bỏ qua. Tôi có thể giả lập một giá trị ngày kết thúc bằng NVL(), nhưng điều đó sẽ làm cho logic kết thúc trước tìm kiếm và thay thế giá trị đó.Oracle SQL - max() với giá trị NULL
Có cách nào để nhận hàm max() để sắp xếp NULL cao không?
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
)
Truy vấn này hoạt động, nhưng giảm hàng ở nơi kết thúc là 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;
Truy vấn này khắc phục điều đó, nhưng bây giờ tôi có giá trị ngày kết thúc "giả" (9/9/9999). Một cái gì đó tôi không muốn phải mã hóa xung quanh.
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;
Cảm ơn.
Bạn có rất nhiều câu hỏi mà bạn đã không được chấp nhận một câu trả lời, bạn sẽ nhận được sự quan tâm nhiều hơn trong câu hỏi của bạn nếu bạn có thể quay trở lại và đánh dấu câu trả lời đúng (sử dụng đường viền đánh dấu ở bên trái của câu trả lời). – bendataclear
Tôi thậm chí không biết tính năng Chấp nhận. Sẽ quay lại và cập nhật một số câu trả lời cũ hơn. – nibeck