假设我有一个如下所示的表:
Account | Sale | Date |
---|---|---|
A | $5 | 2023-Jan-01 |
A | $8 | 2023-Feb-15 |
B | $2 | 2023-Mar-03 |
A | $7 | 2023-Apr-10 |
A | $9 | 2024-Jan-01 |
如果用户 Select 的日期范围是2023-Apr-01到2023-Apr-30,我希望该表筛选到以下内容:
Account | Sale | Date |
---|---|---|
A | $5 | 2023-Jan-01 |
A | $8 | 2023-Feb-15 |
A | $7 | 2023-Apr-10 |
其中,我不仅可以看到指定日期范围内的帐户,还可以看到该帐户在指定日期范围之前的所有以前的销售.简单地做SELECT * WHERE Date < 2023-Apr-30
就会返回:
Account | Sale | Date |
---|---|---|
A | $5 | 2023-Jan-01 |
A | $8 | 2023-Feb-15 |
B | $2 | 2023-Mar-03 |
A | $7 | 2023-Apr-10 |
这不是我们想要的结果.我最初做的分区类似于MAX(Date) OVER (PARTITION BY Account ORDER BY Date) AS Max_Date
:
Account | Sale | Date | Max_Date |
---|---|---|---|
A | $5 | 2023-Jan-01 | 2024-Jan-01 |
A | $8 | 2023-Feb-15 | 2024-Jan-01 |
B | $2 | 2023-Mar-03 | 2023-Mar-03 |
A | $7 | 2023-Apr-10 | 2024-Jan-01 |
A | $9 | 2024-Jan-01 | 2024-Jan-01 |
如果A的最大销售日期是2023年4月30日,这将是可行的,但由于现在是2024年1月1日,结果将是一个空表.有什么主意吗?