SQL return 的 Where 子句在加入 table 日期的 30 天时间跨度内记录

SQL Where clause to return records within 30 day time span of joined table dates

大家好,我有一个 SQL 问题。我有一个 table 我创建的,我想在我的查询中使用它。

下面的示例(我创建它是为了不共享原始数据)。我认为 where 语句将是我需要帮助的重要部分。

ALL - 包含数据库中的数据,包括日期。

WEB(下)- Table我已添加

DATE        ID       ORDER NUMBER
21/06/2016  RED      11148
22/06/2016  BLUE     16996
23/06/2016  RED      11000
24/06/2016  GREEN    17783
25/06/2016  RED      12487
26/06/2016  BLUE     12837
27/06/2016  RED      11755
28/06/2016  GREEN    11698

我的查询开始是这样的:

SELECT
I.DATE,
I.ORDER_NUMBER,
I.ID,
I.FLOW,
I.MEDIUM,
I.REASON,
I.SUB_REASON 

FROM WEB D
JOIN ALL I
ON D.ORDER_NUMBER = I.ORDER_NUMBER

我需要一个 WHERE 语句来生成以下内容 - 我想从 ALL 中撤回所有内容,即从 WEB 中的每个 DATE 开始加上 30 天。

所以澄清如果

DATE        ID       ORDER NUMBER
21/06/2016  RED      11148

存在于WEB中我想从30天post21/06/2016(WEB中保存的日期)内发生的ALL中提取所有匹配项ORDER_NUMBER。

所以输出看起来像这样。如您所见,返回的日期在 30 天内 post table 中加入的日期。

DATE       ORDER_NUMBER    ID     FLOW     MEDIUM     REASON     SUB_REASON
26/06/2016 11148           RED    IN       WEB        IN         ONLINE

提前致谢!

将 BETWEEN 与 sysdate 和 sysdate-30 一起使用,如下所示

SELECT
  I.DATE,
  I.ORDER_NUMBER,
  I.ID,
  I.FLOW,
  I.MEDIUM,
  I.REASON,
  I.SUB_REASON 
FROM WEB D
  JOIN ALL I ON D.ORDER_NUMBER = I.ORDER_NUMBER
WHERE I.DATE BETWEEN sysdate-30 and sysdate

希望对您有所帮助

尝试: WHERE i.DATE BETWEEN d.DATE AND d.DATE+30
在抽象您的真实数据时,您忽略了日期是一个保​​留字,因此每次出现都需要双引号,例如 WHERE i."DATE" BETWEEN d."DATE" AND d."DATE"+30