2009-09-24 2 views
0

은 내가 USAGE_START_DATE 열에서 null 값을 얻기 위해 노력하고 있어요.SQL 최대 및 널 (null)

지금까지 얻은 것은 USAGE START DATE 열의 값이있는 고유 한 최대 레코드 수이며 USAGE START DATEnulls 인 레코드를 찾을 수 없습니다.

나는 이미 시도했다 ISNULL, COALESCE, NVL, NZ.

나는 2 개 테이블을 가지고 : Reservation_id로 연결.

ReservationID Usage Start Date 
1    01/01/2001 00:00:00 
1    02/01/2001 00:00:00 
1    03/03/2001 00:00:00 
2    NULL 
2    NULL 

지금까지 내 현재 코드 : 여기에 내가 가진 무엇 :

여기
ReservationID Usage Start DAte 
1    03/03/2001 00:00:00 

내가 원하는 무엇인가 :

ReservationID  Usage Start Date 
1     03/03/2001 00:00:00 
2 

감사합니다!

내 코드를 단순화하기 위해 : 당신은 USAGE_START_DATE은 당신이 그들을 필터링하고 있기 때문에 NULL 인 행을 얻을 않을거야

SELECT distinct RENTAL_DETAILS_VW.RESERVATION_ID, 
RENTAL_DETAILS_VW.USAGE_START_DATE, 
FROM BYNXFLEET_BI.RENTAL_DETAILS_VW, WILLOW2K.RESERVATIONS 
WHERE RENTAL_DETAILS_VW.USAGE_START_DATE = (
select max(case when ors2.USAGE_START_DATE is null 
    then {ts ' 2009-01-01 00:00:00 ' } 
    else ors2.USAGE_START_DATE END) 
FROM RENTAL_DETAILS_VW ors2 
where ors2.RESERVATION_ID=RESERVATIONS.RESERVATION_ID) 
+6

최소한의 테스트 케이스를 만들기 위해 외부 필드를 잘라내십시오. 대부분의 질문은 귀하의 질문에 중요하지 않으며 나는 그것을 통해 넘어갈 것을 고대하지 않습니다. – outis

+1

나는 당신이 무엇을 요구하고 있는지 정말로 모르겠습니다. 가능하다면 실제로보고있는 내용과보고 싶은 내용을 포함시킬 수도 있습니다. 우리는 당신의 데이터베이스를 가지고 있지 않기 때문에, 이것이 무엇을 반환해야하는지 알 수는 없습니다. – SqlRyan

+0

@khoa : 당신이 찾고있는 것으로 내 대답을 업데이트했습니다. – SqlRyan

답변

2

을 - 마지막 절은이 행만 것을 볼 수있는 곳 일치하는 RESERVATION_ID의 최대 날짜가 포함됩니다. 일치하는 예약이 없더라도 NULL USAGE_START_DATE 행을 포함하려고합니까?

업데이트 : 당신은 DISTINCT가 필요 없으며 결과에 부정적인 영향을 미칠 수 있습니다. 또한 NULL 대신 "공백"을 원하므로 ISNULL을 사용해야합니다. LEFT JOIN이 필요하며 읽을 수 있도록 일부 테이블 별칭을 추가했습니다. 내 생각에 당신이 원하는 것 :

SELECT rd.RESERVATION_ID, 
     ISNULL(MAX(rd.USAGE_START_DATE), '') as START_DATE, 
    FROM BYNXFLEET_BI.RENTAL_DETAILS_VW rd 
    LEFT 
    JOIN WILLOW2K.RESERVATIONS r 
    ON rd.RESERVATION_ID = r.RESERVATION_ID