如何检索两个日期之间的报告数字

How to retrieve report figure between two dates

为了隐含,我要说我们有 5 个表 SQL

1) 客户账户 2) 线索 3) 来电 4) 报告

下面是我编写的一个 SQL 示例,目的是了解它的工作原理。我的问题是,如何检索从 phone 呼叫之日起 5 天后收到业务报告的记录。

例子

今天是 2017 年 6 月 8 日,我给一位潜在客户打了 phone 电话。这条线索是 ABC。 ABC 对 XYZ 感兴趣。我于 2017 年 6 月 12 日向 XYZ 发送了一份报告。这是在 5 天内。所以应该检索并计算这条记录,因为我可能会在 5 天内找到超过 100 条记录。

SELECT Id, Name, DateOfCall
FROM Lead, Call, ClientAccounts
ON Lead.id = Call.id AND Lead.id = ClientAccounts.id
WHERE DATEDIFF (DateOfReport, StartOfCall, getDate()) < 5

如果我执行此 Sql 语句,它应该检索上述报告、ClientAccount 的名称以及与该 ClientAccount 关联的潜在客户。

我希望这是有道理的,我是 SQL 的初学者,但我知道我对 SQL 的语法是错误的,但我的想法是理解这一点,稍后再担心语法,因为我没有 SQL 服务器来执行此操作。

您离目标不远了。

您需要使用正确的 JOIN 语法;你的东西有点破。

SELECT ... some columns ...
  FROM Lead L
  JOIN Call C  ON L.id = C.id
  JOIN ClientAccounts CA ON L.id = CA.id

这会将别名 LCCA 分配给您的三个 table。

您可以尝试 运行 这个和 SELECT * 看看你得到了什么。但是在完成的查询中使用 * 是菜鸟的错误。

接下来您需要提供您希望 SELECT 的列的名称,以及 table 别名。我必须猜测每列来自哪个 table,因为您没有向我们展示您的 table 定义。所以,我猜...

 SELECT L.id, L.Name, C.DateOfCall
  FROM Lead L
  JOIN Call C  ON L.id = C.id
  JOIN ClientAccounts CA ON L.id = CA.id 

运行那个。看看你得到了什么。如果我的示例有错误的 table 或列名,请修复它们。 (请不要要求我们在此处修复它们;我们不知道您的 table 布局。)

最后您需要 select 日期范围。尝试

WHERE C.StartOfCall >= CURDATE() - INTERVAL 5 DAY

这将获取呼叫在五天前的午夜或之后开始的所有行。