0

我正在尝试获取列null中的值USAGE_START_DATE

到目前为止,我得到的是USAGE START DATE列中具有值的那些的唯一最大记录,并且nullsUSAGE START DATE.

我已经试过了ISNULL,,,,。COALESCENVLNZ

我有 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

谢谢!!!

为了简化我的代码:

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)
4

1 回答 1

2

您不会得到任何 USAGE_START_DATE 为 NULL 的行,因为您将它们过滤掉 - 最后的 WHERE 子句看到只有匹配 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
于 2009-09-24T17:00:24.903 回答