Oracle 데이터베이스에서 요청을 실행 중입니다.SQL에서 maxvalue 또는 nullvalue를 반환하는 방법은 무엇입니까?
이ID ELEMENT_ID BEGIN_DATE END_DATE
--------------------------------------------
1 1 01/01/2007 01/06/2007
2 1 01/06/2007
3 2 01/01/2006 01/07/2006
4 2 01/07/2006 31/12/2006
END_DATE
가 작성되지 않은 시간 슬롯이 여전히 있음을 의미합니다 : 내 테이블의 하나는 요소 시간 슬롯을 포함하고 있으며, 다음의 예와 올바른되도록 같은 요소에 대한 몇 가지 시간 슬롯이있을 수 있습니다 실행 중입니다 (요소의 가장 최근 시간 슬롯입니다).
따라서 각 요소에 대해 가장 최근의 END_DATE
을 검색 할 때 # 2와 # 4 행을 가져 오려고합니다. 그래서 내가 직면하고있는 문제는 NULL을 가장 높은 것으로 생각하는 것입니다. END_DATE
...
단일 SQL 요청으로이 작업을 수행 할 수 있습니까? 물론
나는 간단한 시도 :
SELECT MAX(END_DATE) FROM ...
을하지만 때문에 NULL 값의 한 정도로 아니다.
미리 감사드립니다.
이 아무도 것으로 가정하여 end_dates는 미래에 있으며 이는 귀하의 예를 기반으로합니다. – LesterDove
이 경우 내 end_dates는 앞으로도 존재하지 않습니다. 스 니펫을 주셔서 감사합니다, 그것은 잘 작동합니다! 그러나, 나의 다음 단계는 식별 된 MAX (END_DATE)에 대한 전체 행을 선택하기 때문에 마지막으로 조금 문제가 있습니다 ... 그래서'END_DATE'에 가짜 날짜를 삽입하는 것은 더 이상' SELECT *에서 MyTable 어디 END_DATE = (SELECT MAX (...));'나를위한 마지막 팁 ?? :) – Clem
기술적으로 사과를 사과와 비교하고 비교의 양면에서 널을 대체하는 한 당신의 접근 방식은 효과가 있습니다. SELECT * FROM MyTable WHERE NVL (END_DATE, SYSDATE + 1) = (SELECT MAX (. ..)); 아마도 다른 방법이 많이 있습니다 ... – LesterDove