【问题标题】:Current Value is less than previous当前值小于上一个
【发布时间】:2021-12-23 12:41:18
【问题描述】:

以下是预订发生的所有修改。

我需要为预订 ID 提取结帐日期小于之前的预订。比如客人是否更改了预订以及他们是否提前了结帐日期。

输出: - 只有 2 个,因为这是结帐日期小于前一个的唯一预订。

查询:我尝试获取有修改的保留并分配了排名,但仍然不确定如何比较前一个。您能否建议如何在此处进行操作。

 SELECT ReservationID
 FROM (
 SELECT ReservationID,RANK() OVER(PARTITION BY ReservationID ORDER BY CheckoutDate Desc) rn
 FROM RESERVATIONS
 WHERE ReservationID IN (
                             SELECT ReservationID
                             FROM (
                                         SELECT ReservationID,COUNT(DISTINCT CheckoutDate)
                                         FROM RESERVATIONS
                                         GROUP BY ReservationID
                                         HAVING COUNT(DISTINCT CheckoutDate) >1
                             )  
                        )
) WHERE rn=1    

        

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    我认为您可以尝试以下具有 FIRST_VALUE() 窗口函数的查询 -

    SELECT ReservationID
      FROM (SELECT ReservationID,
                   CheckoutDate,
                   FIRST_VALUE(CheckoutDate) OVER (PARTITION BY ReservationID
                                                  ORDER BY TO_DATE(MonthChanged, 'Mon-YY') DESC) upd_CheckoutDate
              FROM RESERVATIONS)
     WHERE upd_CheckoutDate < CheckoutDate;
    

    Demo.

    【讨论】:

      猜你喜欢
      • 2013-11-02
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 2016-04-24
      • 2021-07-13
      • 1970-01-01
      • 2020-09-25
      • 2014-07-01
      相关资源
      最近更新 更多