SQL:如何在接下来的三个可用日期中选择表条目?

Tam*_* JQ 1 sql oracle where-clause

进一步澄清这个问题......

我有以下表ORDERS_TAB和一些示例信息:

|Order| Launch_Date |
|  1  |   27-Sep-11 |
|  2  |   29-Sep-11 |
|  3  |   30-Sep-11 |
|  4  |   03-Oct-11 |
|  5  |   28-Oct-11 |
|  8  |   10-Oct-11 |
|  7  |   29-Sep-11 |
Run Code Online (Sandbox Code Playgroud)

我想在接下来的三个可用日期内(包括当天)选择所有具有LAUNCH_DATE值的订单.因此,如今今天是29日至9月11日,表中的三个可用日期将是9月29日至9月30日,9月30日至11日以及03年10月3日.因此查询将返回结果:

|Order| Launch_Date |
|  2  |   29-Sep-11 |
|  3  |   30-Sep-11 |
|  4  |   03-Oct-11 |
|  7  |   29-Sep-11 |
Run Code Online (Sandbox Code Playgroud)

所以我假设我需要检查系统中的当前日期,搜索这个日期或下一个可用的日期,然后找到接下来的两个可用日期..问题是我不知道如何做到这一点!

我正在寻找的是一个简单的SELECT语句,但有一些条件但是我们非常感谢任何帮助,

谢谢.:)

Mat*_*lie 7

SELECT
  *
FROM
(
  SELECT
    DENSE_RANK() OVER (ORDER BY Launch_Date) available_date_index,
    *
  FROM
    ORDERS_TAB
  WHERE
    Launch_Date >= TRUNC(Sysdate)
)
WHERE
  available_date_index <= 3
Run Code Online (Sandbox Code Playgroud)


编辑由于关于DENSE_RANK()如何工作的混淆,这是OP的例子......

|Order| Launch_Date |    Available_Date_Index
|  1  |   27-Sep-11 | <excluded by WHERE clause>
|  2  |   29-Sep-11 |             1
|  3  |   30-Sep-11 |             2
|  4  |   03-Oct-11 |             3
|  5  |   28-Oct-11 |             5
|  8  |   10-Oct-11 |             4
|  7  |   29-Sep-11 |             1
Run Code Online (Sandbox Code Playgroud)

这意味着退回的订单将是2,3,4,7.正如OP所描述的那样.