SQL Where子句在30天内加入表日期的时间范围

问题描述:

大家好我有一个SQL问题。我有一个我创建的表格,我想在查询中使用它。SQL Where子句在30天内加入表日期的时间范围

下面的示例(我已创建,以便不共享原始数据)。我相信这将成为我需要帮助的重要部分。

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

WEB(下) - 表我已经加入

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语句产生如下 - 我想拉从WEB中的每个DATE加上30天后的所有内容。

所以要澄清,如果存在于WEB

DATE  ID  ORDER NUMBER 
21/06/2016 RED  11148 

我想拉的所有匹配ORDER_NUMBER从所有这一切都发生在30天内发布21/06/2016(在WEB举行的日期)。

所以输出看起来像这样。正如你所看到的,返回的日期在加入表格中的日期之后的30天内。

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

在此先感谢!

+0

为了澄清,提供'ALL'的样本数据和期望的结果。 –

尝试: WHERE i.DATE BETWEEN d.DATE AND d.DATE+30
在抽象的真实数据,你忽略了这个日期是一个保​​留字等等每个事件都需要双引号,例如 WHERE i."DATE" BETWEEN d."DATE" AND d."DATE"+30

+0

我想这可能是我之后只有问题是我的数据集都很大,所以它可能会超载一点。如果我能为它出口,我会标记为已回答。谢谢 – nohholmez

与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 

希望这有助于

+0

谢谢。那我怎么会坐在我的查询结尾(我是这个新手),它会和WEB表匹配吗,还是只回收一切? – nohholmez

+0

如果没有使用这个编辑过的查询,你在where子句中是否有其他条件 –