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
大家好,我有一个 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